在unix环境编程中,经常用到定时,通常用到sleep函数让程序进行定时,但是该函数是可以被信号进行中断的,
也就是说,当用户键入中断时,从中断中返回,则程序从sleep函数的下一条语句进行执行。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void sig_handler(int num)
{
printf("\nrecevive the signal is %d\n", num);
}
int main()
{
int time = 20;
signal(SIGINT, sig_handler);
printf("go to sleep.\n");
sleep(time);
printf("sleep is over , I am over.\n");
exit(0);
}
在睡眠过程中,我们键入ctrl+c中断键,结果如下:
从结果可以分析出,键入中断键后,信号函数被捕获,程序从睡眠中返回,直接执行sleep的下一条语句。