可中断睡眠
可中断睡眠的执行情况:进程开始时处于可中断睡眠状态;那么如果进程接收到信号后,进程将被唤醒而不在阻塞,当执行完信号处理函数后,就不再睡眠了,直接向下执行代码。
sleep()
函数
unsigned int sleep(unsigned int seconds);
注意:
(1) 能被信号打断,然后处理信号函数以后,就不再睡眠了,直接向下执行代码
(2) sleep函数的返回值,是剩余的秒数。因此,利用sleep的返回值,可以使得sleep睡眠足够的时间,实现代码见下sleep_no_wake
//持续sleep sec秒,该睡眠不会被信号中断
void sleep_no_wake(int sec){
do{
n=sleep(sec);
}while(sec > 0);
}