直接看代码
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
void myfunc()
{
printf("myfunc\n");
exit(0); //如果没有此句,程序在主函数中继续运行,输出never run
}
int main()
{
unsigned int i;
int time;
alarm(9);
sleep(2);
time = alarm(0); //闹钟取消,返回剩余时间,每次只能有一个闹钟生效
printf("dd%d\n",time);
alarm(2);
signal(SIGALRM, myfunc); //catching signal,获得闹钟返回的信号SIGALRM,运行对应程序。
pause(); //挂起进程,当获得信号后,调用signal函数,如果没有信号调用默认的catching函数一般就会退出进程
printf("never run");
return 0;
}
输出结果为:
more time:7
myfunc
never run