设为首页 加入收藏

TOP

I/O操作上设置超时之alarm闹钟法
2014-11-24 08:20:29 来源: 作者: 【 】 浏览:1
Tags:I/O 操作 设置 超时 alarm 闹钟

调用 alarm,它在指定超时期满时产生SIGALRM信号。这个方法涉及信号处理。


用法:


alarm(time):TIME就是指定的超时期;如果之前设有超时期,alarm()会返回其时期的剩余值;


signal(SIGALARM, connect_alarm):指定connect_alarm函数是时钟期满时的处理函数;


函数退出前要关闭时钟:


Sigfunc *sigfunc;


sigfunc=signal(SIGALARM, connect_alarm);//保存信号SIGALARM的原始处理函数


alarm(0);//关闭时钟


signal(SIGALARM, sigfunc);//恢复SIGALARM信号的原始处理函数


循环开启闹钟和关闭闹钟:


Sigfunc *sigfunc;


sigfunc=signal(SIGALARM, connect_alarm);


alarm(2);//以上是开闹钟


for(;;){


if(A==terminate clock forerver){


alarm(0);


signal(SIGALARM, sigfunc);


}else if(B==turn up the clock again){


alarm(0);


sigfunc=signal(SIGALARM, connect_alarm);


alarm(2);


}else


do noting....


}


如果符合条件B的话,闹钟要重新开启,这里要先关了,再重新设置你期望的处理函数,然后再设定时间。如果光是简单的重新设定时间的话,程序再新闹钟超时时会直接跳出for循环,结束程序。因为这是默认处理函数,如果你重设置闹钟时不给予自定义的处理函数,会直接退出函数,后果不可估计的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇最完整的Android源码获取方法及环.. 下一篇Linux 程序信号处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)