#包含
#包含
#包含
#包含
voidSIG_Handler(intnum ) )。
{
打印(nrecvivethesignalis % d (n ),num );
}
int main () )
{
int time=20;
signal(sigint,sig_handler );
printf (企业级sleep. n );
sleep (时间);
printf(sleepisover,主操作器.n );
退出(0;
}
执行结果的屏幕截图如下。
从执行结果可以看出,当我按下Ctrl c发出中断时,被该函数捕获,处理了该信号之后,函数直接执行sleep下的语句;
备注: sleep (时间)返回值为睡眠剩余时间;
以下示例显示真正的睡眠时间(不受中断影响) :
#包含
#包含
#包含
#包含
voidSIG_Handler(intnum ) )。
{
打印(nrecvivethesignalis % d (n ),num );
}
int main () )
{
int time=20;
signal(sigint,sig_handler );
printf (企业级sleep. n );
//sleep (时间);
do{
时间=sleep (时间;
(while )时间0;
printf(sleepisover,主操作器.n );
退出(0;
}
执行结果的屏幕截图如下。
备注:其中,recevie the signal is 2.表示该信号为中断信号; 信号的具体值如下图所示。
最后是sleep函数的man手册,命令为“man 3 sleep”