linux中的信号2——alarm、pause函数

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
 

1、alarm函数

函数原型

函数说明

(1)内核以API形式提供的闹钟;

(2)可以为当前进程定义闹钟,时间到了会发出SIGALRM信号。

(3)每个进程只能有一个alarm,当重新定义时,会重新计时。

(4)注意函数的返回值,见上图文字。

代码示例

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();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?

表单中使用电子合同时&#xff0c;不仅需要进行功能设置&#xff0c;还需要制作一份PDF格式的模板&#xff0c;上传到“合同模板”中&#xff0c;才能生成有效的电子合同&#xff0c;接下来&#xff0c;我们一起了解模板的制作方法。制作方法 1. 准备PDF模板首先准备一份PDF格式…

edoc2中标电子文件管理标准ERMS制定项目

2019独角兽企业重金招聘Python工程师标准>>> 据悉&#xff0c;上海鸿翼数字计算机网络有限公司&#xff08;edoc2&#xff09;参加了电子文件管理标准ERMS制定项目的投标&#xff0c;经过精心准备和专业的答辩&#xff0c;凭借多年在电子文件管理领域长期的探索和研…

L_C_4 1

#include <stdio.h> void changValue1(int x,int y); void changValue1(int x,int y) { int tmp 0; tmp x; x y; y tmp; } void changValue2(int *x,int *y); void changValue2(int *x,int *y) { int tmp 0; tmp *x; *x *y; *y tmp; } // 多返回值的函数 int cal…

文件IO——如何实现非阻塞式IO?

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、阻塞式IO 1、阻塞式的概念 我们知道&#xff0c;有些函数在调用时&#xff08;比如网络编程中的recv函数&#xff09;&#xff0c;如果某些条件不满足&#xff0c;则会进入等待状态&#xff0c…

散点画三维曲面图_UG 复杂曲面合金零件的数控加工

随着柔性制造、机床数控技术的飞速发展&#xff0c;具有复杂、 精密、小批量、多品种的曲面零件越来越多&#xff0c;如何利用数控 加工技术高质量、高效率加工该类零部件是很有研究价值 的。 本研究利用 UG 软件对复杂曲面合金零件进行三维实 体建模、设计加工工艺过程&#x…

扫盲:php session缓存至memcached中的方法

memcached是一套分布式的快取系统&#xff0c;当初是Danga Interactive为了LiveJournal所发展的&#xff0c;但被许多软件&#xff08;如MediaWiki&#xff09;所使用。这是一套开放源代码软件&#xff0c;以BSD license授权协议发布。[1]memcached仅支持一些非常简单的命令 比…

beginner3

<!-- 生成验证码 --> <action name"rand" class"mainAction" method"rand"> <result type"stream"> //默认返回为nameSUCCESS <param name"contentType">image/jpe…

通过stream去重_stream去重

引言Spring Boot 2.0最近去了GA&#xff0c;所以我决定写我关于Spring的第一篇文章很长一段时间引言Spring Boot 2.0最近去了GA&#xff0c;所以我决定写我关于Spring的第一篇文章很长一段时间。自发布以来&#xff0c;我一直在看到越来越多的Spring WebFlux以​​及如何使用它…

文件IO——获取文件属性

以下内容源于朱有鹏嵌入式课程的学习整理与整理&#xff0c;如有侵权请告知删除。 前言 文件属性&#xff0c;包括文件的名字、创建时间、文件类型、文件权限等等内容。 本文讲述了以下内容&#xff1a; &#xff08;1&#xff09;文件类型有哪些&#xff1b; &#xff08;2&am…

使用juniversalchardet做字符编码识别

为什么80%的码农都做不了架构师&#xff1f;>>> 在抓取网站的页面的时候最烦人的一件事情之一就是识别原站点的编码&#xff0c;通常来说只有GBK&#xff08;GB2312&#xff09;和UTF8两种&#xff0c;不过依旧需要读取大量Http头信息来识别&#xff0c;有些网站则…

淘宝开放API,很不错

http://api.taobao.com/myresources/standardSdk.htm?spm0.0.0.0.YeOZMs# 转载于:https://www.cnblogs.com/tandychao/archive/2013/03/01/2938561.html

短线操作总结

今日操作很失败&#xff0c;到嘴的肉都跑了&#xff01;首先是昨日上午买入的保险股&#xff0c;下午领涨&#xff0c;由于是T1的缘故&#xff0c;只能在今天卖&#xff0c;没想到今日保险股全线熄火&#xff0c;走了一波过山车&#xff0c;至尾盘微利&#xff1b;其次是昨天下…

新人报道,写的东西还请大神们多指导!也希望能让和我一样的同事少走弯路。...

大家好&#xff01;我刚工作&#xff0c;经验还很有限&#xff0c;写的东西都是自己在工作过程中遇到的问题&#xff0c;花了很多时间来解决之后的一些总结&#xff0c;可能比较浅显也比较简单&#xff0c;有什么不足的地方还请大家指正&#xff0c;有好的方法也欢迎大家留言&a…

如何用word制作英语答题卡_英语考试答题卡(word 版)

西宁联想教育培训学校西宁联想教育培训学校第1页共1页****学校****考试模拟试卷英语卷(答题卡)(时间&#xff1a;120分钟&#xff0c;满分&#xff1a;120分)姓名&#xff1a;_______________学校&#xff1a;___________________准考证号&#xff1a;________________________…

获取系统信息1——linux系统中的时间

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、关于时间的概念 1、GMT时间 GMT是格林尼治时间&#xff0c;即格林尼治地区的当地时间。用格林尼治的当地时间作为全球国际时间&#xff0c;用以描述全球性的事件的时间&#xff0c;方便大家记忆…

hystrix 单独使用_使用Hystrix对Dubbo消费者提供线程隔离保护

在dubbo中对于消费者的保护提供了actives进行并发控制保护&#xff0c;但是功能相对薄弱&#xff0c;下面我们探讨下如何使用Netflix提供的服务容错组件Hystrix对dubo消费者提供线程隔离保护为什么需要Hystrix?在大中型分布式系统中&#xff0c;通常我们需要依赖很多dubbo服务…

二分查找(Binary Search)

1.递归实现 int binarySearchRecursive(int a[],int low,int high,int key){if(low>high)return -(low1);int midlow(high-low)/2;if(key<a[mid])return binarySearchRecursive(a,low,mid-1,key);else if(key > a[mid])return binarySearchRecursive(a,mid1,high,key)…

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...

回文&#xff1a;字符对称排列的字符串&#xff0c;例如ABCBA 思路&#xff1a;根据队&#xff1a;先进先出和栈: 先进后出的原则&#xff0c;进行比较出队和出栈的字符是否相等。如果相等&#xff0c;则为回文。 创建控制台应用程序。 1 #region 字符节点类 2 …

字符设备驱动基础5——驱动如何操控硬件

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 补充内容&#xff1a;字符设备驱动高级篇5——静态映射表、动态映射结构体方式操作寄存器 前言 上节字符设备驱动基础4——读写接口的操作实践中&#xff0c;驱动源代码中的test_chrdev_open()、te…

Android----使用代码 建立gprs 闹钟 连接

Android&#xff1a;实用代码&#xff08;开启启动、建立GPRS连接、闹钟等&#xff09; 分类&#xff1a; Android2012-04-21 18:06312人阅读评论(0)收藏举报androidactionstringservice手机j2me1&#xff1a;查看是否有存储卡插入String statusEnvironment.getExternalStorage…