qfedu-linux-advanced-level/day3/t15.c

35 lines
865 B
C

#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/time.h>
// 定时器的使用 alarm 函数的使用
void alarm_handle(int sig)
{
printf("接收到了 SIGALRM(%d) 信号\n", sig);
}
int main()
{
struct itimerval new_value;
// 首次触发信号的时间
new_value.it_value.tv_sec = 5; //5秒后发送信号
new_value.it_value.tv_usec = 0; //微秒
// 之后每次触发信号的时间
new_value.it_interval.tv_sec = 1; //每隔1秒发送信号
new_value.it_interval.tv_usec = 0;
// 注册信号处理函数
signal(SIGALRM, alarm_handle); //注册信号处理函数
// 信号处理函数的注册方式
setitimer(ITIMER_REAL, &new_value, NULL); //设置定时器
while (1)
; //程序进入死循环,等待信号
return 0;
}