博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
I/O操作上设置超时之alarm闹钟法
阅读量:4028 次
发布时间:2019-05-24

本文共 762 字,大约阅读时间需要 2 分钟。

环境是linux ubuntu系统

调用 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循环,结束程序。因为这是默认处理函数,如果你重设置闹钟时不给予自定义的处理函数,会直接退出函数,后果不可估计的。

转载地址:http://itpbi.baihongyu.com/

你可能感兴趣的文章
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
部分笔试算法题整理
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
pyQt不同窗体间的值传递(一)——对话框关闭时返回值给主窗口
查看>>
linux mint下使用外部SMTP(如网易yeah.net)发邮件
查看>>
北京联通华为光猫HG8346R破解改桥接
查看>>
python使用win32*模块模拟人工操作——城通网盘下载器(一)
查看>>
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
2017阿里内推笔试题--算法工程师(运筹优化)
查看>>
python自动化工具之pywinauto(零)
查看>>