UnixC 学习之自己实现sleep()函数
2020-01-15 06:28
96 查看
- pause(2)
#include <unistd.h>
int pause(void);
功能:等待信号,只有进程收到信号,信号处理函数被调用后,pause(2)才返回,否则处于阻塞状态。
返回值:返回-1 errno被设置#include <signal.h> #include <unistd.h> #include <stdio.h> unsigned int t_sleep(unsigned int); void handle(int); int main(void){ unsigned int n = t_sleep(5); if(0==n) printf("time is over...\n"); return 0; } unsigned int t_sleep(unsigned int seconds){ signal(14, handle);//自定义14号信号,即SIGALRM信号 alarm(seconds);//seconds秒后发出SIGALRM信号 pause();//阻塞,直到SIGALRM信号被handle处理结束 return alarm(0);//如果pause函数被其他信号唤醒,那么alarm还是在计数的 //过使用alarm(0)取消它并得到它的剩余时间 } void handle(int n){ return ; }
执行效果:程序在5秒之后结束。
总结:该t_sleep和sleep并不一样,只是大概相同,假设有alarm(2)放在sleep(5)前边时,则两秒后sleep(5)会被打断,而t_sleep()不会。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 自己写的unix文件拷贝指令cp实现函数
- 自己以前写的函数(总结一下,都是学习Unix高级编成练手的)
- UNIX环境高级编程习题3.2 自己实现dup2函数功能
- STL upper_bound(),lower_bound()函数的学习+自己的实现
- C/C++ 日常学习总结(第二十篇)实现自己的printf函数
- 自己写一个strcpy(char*dest,char*src),如何在函数内部实现防御性溢出?
- 每天学习一算法系列(24)(实现字符串左旋转的函数)
- 自己写的一些小函数.用正则表达式实现一些小功能~
- EF学习笔记28:如何实现自己的预先加载(Eager Loading)策略
- 自己写的STM32 内存管理 实现了malloc,free,remalloc等函数
- atoi 函数自己写代码实现
- 2.6版本Linux上替换系统调用函数实现隐藏文件学习
- javascript实现的像java、c#之类的sleep暂停的函数代码
- 自己实现的一些字符串处理的函数
- C++学习总结_成员函数的声明和实现需要注意问题
- 串口编程 —— 实现 GPS 过程中自己用到的函数 COMMTIMEOUTS,SetCommMask,SetCommTimeouts
- 王爽《汇编语言》探究实验五——自己实现一个printf函数
- 自己实现atoi函数功能,另加一个str2num有用的小程序
- Android多媒体学习九:利用MediaRecorder类实现自己的音频录制程序
- Lua学习笔记二--在Lua中使用自己的C函数收藏