unsigned int
alarm(unsigned int seconds)
函数作用:在seconds秒之后向调用alarm()的进程发送一个SIGALRM信号。
1.如果指定seconds是0,表示取消正在等待的alarm,如果在等待时间结束之前有其它事件到来,alarm也将被取消。
2.对于一个进程而言,只有最近的依次alarm()调用是有效的。alarm()的返回值是上次alarm()调用剩余的时间。
alarm()函数经常与 signal(int signum, sighandler_t handler)函数一起使用,通过signal()函数可以指定受到该信号后的动作。
signum是要处理的信号类型
handler是一个函数指针,指向接到信号后的相应动作
linux所有的事件类型可以通过kill -l命令查看所有的信号类型的宏定义
通过man signal和man alarm可分别查看函数的帮助文档
多次alarm()调用示例:
alarm()与signal()配合示例:
函数作用:在seconds秒之后向调用alarm()的进程发送一个SIGALRM信号。
1.如果指定seconds是0,表示取消正在等待的alarm,如果在等待时间结束之前有其它事件到来,alarm也将被取消。
2.对于一个进程而言,只有最近的依次alarm()调用是有效的。alarm()的返回值是上次alarm()调用剩余的时间。
alarm()函数经常与 signal(int signum, sighandler_t handler)函数一起使用,通过signal()函数可以指定受到该信号后的动作。
signum是要处理的信号类型
handler是一个函数指针,指向接到信号后的相应动作
linux所有的事件类型可以通过kill -l命令查看所有的信号类型的宏定义
通过man signal和man alarm可分别查看函数的帮助文档
多次alarm()调用示例:
#include<unistd.h>
#include<stdio.h>
int main(){
alarm(8);
printf("alarm seconds is 8\n");
sleep(3);
int remain = alarm(6);
printf("first alarm remain time is %d\n", remain);
printf("new alarm seconds is 6\n");
pause();
}
alarm()与signal()配合示例:
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
void handler(){
printf("handler invoked!\n");
}
int main(){
printf("main begin\n");
signal(SIGALRM, handler);
alarm(2);
pause();
printf("main end\n");
}