linux中sleep详解实例
2015-11-20 20:59
666 查看
在linux编程中,有时候会用到定时功能,常见的是用sleep(time)函数来睡眠time秒;但是这个函数是可以被中断的,也就是说当进程在睡眠的过程中,如果被中断,那么当中断结束回来再执行该进程的时候,该进程会从sleep函数的下一条语句执行;这样的话就不会睡眠time秒了;
实例如下:
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205128718-1154039427.png)
从运行结果可以看出,当我按下Ctrl+c发出中断的时候,被该函数捕获,当处理完该信号之后,函数直接执行sleep下面的语句;
备注:sleep(time)返回值是睡眠剩下的时间;
下面的例子是真正的睡眠time时间(不被中断影响):
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205619124-1715466573.png)
备注:其中recevie the signal is 2.表示该信号是中断信号;信号的具体值如下图所示:
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205803015-1700198518.png)
最后是sleep函数的man手册,命令为:man 3 sleep
实例如下:
/************************************************************************* > File Name: sleep.c > Author: > Mail: > Created Time: 2015年11月20日 星期五 20时38分59秒 ************************************************************************/ #include<stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void sig_handler(int num) { printf("\nrecvive the signal is %d\n", num); } int main() { int time = 20; signal(SIGINT, sig_handler); printf("enter to the sleep.\n"); sleep(time); printf("sleep is over, main over.\n"); exit(0); }
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205128718-1154039427.png)
从运行结果可以看出,当我按下Ctrl+c发出中断的时候,被该函数捕获,当处理完该信号之后,函数直接执行sleep下面的语句;
备注:sleep(time)返回值是睡眠剩下的时间;
下面的例子是真正的睡眠time时间(不被中断影响):
/************************************************************************* > File Name: sleep.c > Author: > Mail: > Created Time: 2015年11月20日 星期五 20时38分59秒 ************************************************************************/ #include<stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void sig_handler(int num) { printf("\nrecvive the signal is %d\n", num); } int main() { int time = 20; signal(SIGINT, sig_handler); printf("enter to the sleep.\n"); //sleep(time); do{ time = sleep(time); }while(time > 0); printf("sleep is over, main over.\n"); exit(0); }
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205619124-1715466573.png)
备注:其中recevie the signal is 2.表示该信号是中断信号;信号的具体值如下图所示:
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120205803015-1700198518.png)
最后是sleep函数的man手册,命令为:man 3 sleep
![](http://images2015.cnblogs.com/blog/834965/201511/834965-20151120210312452-1632759543.png)
相关文章推荐
- linux-2.6.32在mini2440开发板上移植之DM9000网卡移植
- Linux1.0 kmalloc kfree_s分析
- Linux1.0 kmalloc kfree_s分析
- 基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
- 和菜鸟一起学linux之V4L2摄像头应用流程
- CentOS 6.5 64bit 安装内核源码编译
- Linux 数据重定向
- Git和GitHub入门(linux环境)
- Linux 下用户(andy)创建的文件可让特定用户(alice)修改
- 如何在Centos 7上面安装软件以及如何生成DesktopIcon(Eclipse+JDK+Mysql)
- Linux 源码下载和学习地址
- 关于linux文件类型总结——APUE学习笔记(3)
- cheng@Linux之基础--GPIO实验
- Linux虚拟地址空间分布
- centos redHat 64位linux 安装iNode客户端
- su、su- 及sudo区别
- linux 定时任务
- linux route命令的使用详解
- linux 路由表设置(双网卡)
- Linux netstat命令详解