定时器的实现
#include"stdio.h"
#include"sys/types.h"
#include"signal.h"
#include"stdlib.h"
#include"unistd.h"
int main()
{
int i;
i=0;
printf("alarm before\n");
alarm(9);
printf("alarm after\n");
while(i<20)//进程最少运行20秒,所以当定时9秒到后,进程还在运行
{
i++;
sleep(1);
printf("没空管你,i=%d\n",i);
}
return 0;
}
说明运行8次,第9秒时,发送信号,进程收到信号后会终止,因为SIGALARM默认是终止进程
用循环是因为alarm会让内核发送终止信号,但如果进程在首都内核发过去的信号之前就终止进程了,就不会收到信号。