35 lines
865 B
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;
|
||
|
}
|