setitimer()函数补充:
it_value设置的时间是第一次发送信号到需要等待的时间;it_interval设置的时间是后续发送信号间隔的时间(调用一次setitimer函数若有设置it_interval,则持续发送信号至进程结束)
signal()函数:
1 /*
2 signal()头文件 #include<signal.h>
3 原型: typedef void (*sighandler_t)(int);
4 //定义一个sighandler_t,表示指向返回值为void(接受参数为int)的指针
5 sighandler_t signal(int signum,sighandler_t handler);
6 signum:信号类型
7 handler:希望该指针去执行的动作
8 作用:signal()能将接收到的信号类型注册信号捕捉处理函数
9 简单来说,在进程运行时,假如接收到指定的信号,就会去处理handler这个函数中的动作
10 返回值:成功返回sighandler_t的指针,失败返回SIG_ERR,并设置errno
11 */
12 #include<stdio.h>
13 #include<sys/time.h>
14 #include<signal.h>
15 #include<stdlib.h>
16 void myfunc(int signalnumber)
17 {
18 printf("hello world\n");
19 }
20 void main(void)
21 {
22 struct itimerval newtime,oldtime;
23 signal(SIGALRM,myfunc);//注册SIGALRM信号的捕捉处理函数
24 newtime.it_value.tv_sec=2;//开始时两秒后发送信号
25 newtime.it_value.tv_usec=0;
26 newtime.it_interval.tv_sec=5;//后续信号间隔5秒发送一次
27 newtime.it_interval.tv_usec=0;
28
29 if(setitimer(ITIMER_REAL,&newtime,&oldtime)==-1){
30 perror("setitimer error\n");
31 exit(1);
32 }
33 while(1){//循环等待signal接收setitimer的信号
34 }
35 }
~