当前位置: 技术问答>linux和unix
alarm发闹铃信号,但只会执行一次.
来源: 互联网 发布时间:2016-08-11
本文导语: 今天测试下alarm函数,但发现它只会执行一次.. 代码如下: #include //所需发送信号头文件 #include #include #include static void UseAlarm(int sig); int main(){ int i = 0; signal(SIGALRM,UseAlarm); //信号闹...
今天测试下alarm函数,但发现它只会执行一次..
代码如下:
#include
//所需发送信号头文件
#include
#include
#include
static void UseAlarm(int sig);
int main(){
int i = 0;
signal(SIGALRM,UseAlarm); //信号闹钟处理
alarm(1); //设置信号闹钟,1s 给目前进程发送一个SIGALRM信号
while(1){
i++;
printf("%d.testn",i);
pause();
}
return 0;
}
//信号闹钟处理
static void UseAlarm(int sig)
{
printf("SIGALRM sign!!!n");
}
测试输出:只会输出一次"SIGALRM sign"
说明该信号只发送了一次,但按说明应该是只要我不取消闹铃信号,就会一直发的.
为什么我这里它指挥发送一次呢???//
代码如下:
#include
//所需发送信号头文件
#include
#include
#include
static void UseAlarm(int sig);
int main(){
int i = 0;
signal(SIGALRM,UseAlarm); //信号闹钟处理
alarm(1); //设置信号闹钟,1s 给目前进程发送一个SIGALRM信号
while(1){
i++;
printf("%d.testn",i);
pause();
}
return 0;
}
//信号闹钟处理
static void UseAlarm(int sig)
{
printf("SIGALRM sign!!!n");
}
测试输出:只会输出一次"SIGALRM sign"
说明该信号只发送了一次,但按说明应该是只要我不取消闹铃信号,就会一直发的.
为什么我这里它指挥发送一次呢???//
|
man里说:
alarm() arranges for a SIGALRM signal to be delivered to the process in seconds seconds.
意思是只设定一个信号发送,不知道你从哪看到的说会一直发送。
alarm() arranges for a SIGALRM signal to be delivered to the process in seconds seconds.
意思是只设定一个信号发送,不知道你从哪看到的说会一直发送。
|
应该用setitimer(ITIMER_REAL, &itv, &oldtv);
|
你只发送了一次信号