Linux下实现mysleep并分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux下实现mysleep并分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1287字,纯文字阅读大概需要2分钟。
内容图文
![Linux下实现mysleep并分析](/upload/InfoBanner/zyjiaocheng/939/d7592128afc94dd5ba0be1e6c901199c.jpg)
对于这个问题,我们首先可以想到的是使用pause()函数和alarm()函数进行组合,这样就可以实现sleep函数的作用。
首先来看pause函数的作用
接着来看SIGALRM信号(man 7 signal):
由此我们可以看到SIGALRM默认的Action是Term。
而Term的默认动作是终止进程。
所以我们可以做如下实验,当我们没有信号捕捉的时候会发生什么样的情况?
运行结果:
此时并没有输出“after pause”,在程序执行的过程中,遇到pause程序被挂起之后,当2s之后,发来SIGALRM信号,由于没有重写SIGALRM信号的处理函数,所以系统默认终止该进程。
我们再来看看,当有默认处理函数的时候:
执行结果:
这个时候可以看到,我们想要看到的效果成功了。
在尝试一下其他方法(使用kill命令来发送SIGALRM信号):
执行kill命令:
运行结果:
这个过程也就十分的清晰明了了,当然这里并没有使用比较复杂代码和深层次的探究。
如果有错误,还请指正。
源码:
1 #include <unistd.h> 2 #include <stdio.h> 3 int main() 4 { 5 alarm(2); 6 printf("alarm start!\n"); 7 pause(); 8 printf("after pause!\n"); 9 }
1 #include <unistd.h> 2 #include <stdio.h> 3 #include <signal.h> 4 void fun(int id){ 5 printf("this is function \n"); 6 } 7 int main() 8 { 9 signal(SIGALRM,fun); 10 alarm(2); 11 printf("alarm start!\n"); 12 pause(); 13 printf("after pause!\n"); 14 }
参考链接:
https://segmentfault.com/q/1010000020536343
内容总结
以上是互联网集市为您收集整理的Linux下实现mysleep并分析全部内容,希望文章能够帮你解决Linux下实现mysleep并分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。