/*
sleep函数几点说明
1)sleep函数作用,让进程睡眠。
2)能被信号打断,然后处理信号函数以后,就不再睡眠了。直接向下执行代码
3)sleep函数的返回值,是剩余的秒数
*/
void handler(int num)
{
printf("recv num:%d \n", num);
if (num == SIGQUIT)
{
}
}
#if 1
void test()
{
int n = 100;
pid_t pid;
printf("main ....begin\n");
signal(SIGINT, handler);
sleep(n);
printf("sleep ....结束\n");
}
#endif
#if 0
void test()
{
int n = 100;
printf("main ....begin\n");
signal(SIGINT, handler);
do
{
n = sleep(n);
if(n != 0){
printf("还剩余 %d 秒, 要给睡够。。。。。\n", n);
}else{
printf("TMD,终于睡醒了。。。。。。\n");
}
} while(n > 0);
printf("sleep ....结束\n");
}
#endif
int main(void)
{
test();
return 0;
}
#if 1
void sig_alrm(int signo)
{
printf("收到SIGALRM 信号\n");
}
unsigned int sleep1(unsigned int seconds)
{
if(signal(SIGALRM, sig_alrm) == SIG_ERR){
return seconds;
}
printf("set seconds = %d, but 返回值是 %d\n",seconds, alarm(seconds));
pause();
return (alarm(0));
}
void test()
{
int ret = 0;
ret = sleep1(7);
printf("剩余的秒数:%d\n", ret);
}
#endif
int main(void)
{
test();
return 0;
}