linux中的信号3——alarm、pause函数
来源:互联网 发布:六级分数算法 编辑:程序博客网 时间:2024/06/03 17:19
以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
1、alarm函数
- 内核以API形式提供的闹钟;
- 可以为当前进程定义闹钟,时间到了会发出SIGALRM信号。
- 每个进程只能有一个alarm,当重新定义时,会重新计时。
- 注意函数的返回值,见上图文字。
ret = alarm(5);printf("1st, ret = %d.\n", ret);sleep(3);ret = alarm(5);// 返回值是2但是本次alarm会重新定5sprintf("2st, ret = %d.\n", ret);sleep(1);ret = alarm(5); //返回值时4,但是本次的alarm会重新定5sprintf("3st, ret = %d.\n", ret);
2、pause函数
- pause函数的作用,是让当前进程暂停运行,交出CPU给其他进程去执行;
- 当前进程进入pause状态后,当前进程会表现为“卡住、阻塞住”;
- 要退出pause状态,当前进程需要被信号唤醒。
3、使用alarm和pause来模拟sleep
#include <stdio.h>#include <unistd.h> // unix standand#include <signal.h>void func(int sig){/*if (sig == SIGALRM){printf("alarm happened.\n");}*/}void mysleep(unsigned int seconds);int main(void){printf("before mysleep.\n");mysleep(3);printf("after mysleep.\n");/*unsigned int ret = -1;struct sigaction act = {0};act.sa_handler = func;sigaction(SIGALRM, &act, NULL);//signal(SIGALRM, func);ret = alarm(5);printf("1st, ret = %d.\n", ret);sleep(3);ret = alarm(5);// 返回值是2但是本次alarm会重新定5sprintf("2st, ret = %d.\n", ret);sleep(1);ret = alarm(5); //返回值时4,但是本次的alarm会重新定5sprintf("3st, ret = %d.\n", ret);//while (1);pause();*/return 0;}void mysleep(unsigned int seconds){struct sigaction act = {0};//act.sa_handler = func;//sigaction(SIGALRM, &act, NULL);//这三行应该能省略吧?alarm(seconds);pause();}
阅读全文
0 1
- linux中的信号3——alarm、pause函数
- Linux信号——Sleep函数的模拟实现(利用alarm,pause,sigsuspend函数)
- APUE——信号发送函数kill,raise,pause,alarm
- linux 信号 alarm和pause
- Linux Signal (7): 捕获信号的alarm和pause函数
- linux信号处理之signal、sigaction、alarm、pause函数
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
- 捉拿信号的alarm和pause函数
- apue-alarm和pause函数,关于信号
- Linux环境编程之信号处理(三、利用alarm()和pause()函数实现sleep()函数)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- UNIX环境高级编程——信号之kill、raise、killpg、alarm、pause、abort、sleep、usleep、nanosleep和setitimer函数
- unix环境高级编程-alarm、pause()与信号处理函数
- 1.信号处理之:kill(),alarm(),pause()函数
- [Linux C编程]信号发送捕捉kill() raise() alarm() pause()
- 快速排序
- BLAST中的E值(E-value)
- eclipse在git提交时忽略不必要的文件
- 双目匹配与视差计算
- Mummer文档翻译
- linux中的信号3——alarm、pause函数
- INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
- [(可持久化)字典树 优化建图][2-SAT] LOJ#6036. && 雅礼集训 2017 Day4. 编码
- arcgis api for js入门开发系列十四最近设施点路径分析
- Struts2_文件上传
- Android Framework AIDL的使用
- Java Reflection(反射机制)详解
- java_DateUtil_篇1
- 阿里巴巴集团技术委员会主席王坚:我曾经被诺贝尔奖得主司马贺忽悠_相信人工智能就是未来!