我们在程序中,很多次用到sleep()函数,让它睡眠几秒后再执行该进程。今天呢,我要给大家实现一下sleep函数。

看看代码哦:

运行结果:

结果中每隔三秒钟,打印一条语句。实现了sleep(3)的功能。

关于sleep函数,在这里,我们首先让主函数调用了my_sleep函数,my_sleep函数又调用了注册处理函数,注册了一个SIGALRM的信号;然后为其设置闹钟,看主函数中的my_sleep函数要睡眠多长时间,调用pause等待,那么什么时候处理信号呢?此时,在用户态由于接收到的信号将其保存起来,使其处于未决状态,进入内核态处理异常,再回到用户态执行SIGALRM信号处理函数,信号处理函数返回时执行特殊的系统调用再次进入内核,处理完异常回用户态,从中断的吓一条指令开始执行。当捕捉到信号之后pause返回-1,再调用alarm(0)清空闹钟,调用sigaction恢复SIGALRM信号以前的处理动作。

外附一张图哈:(很重要哦)


比较短小,欢迎来访哦~~

linux之睡眠函数(my_sleep)相关推荐

  1. linux内核中的睡眠函数*delay、*sleep

    目录 一.睡眠函数种类 1.原子上下文 2.非原子上下文 二.使用环境 1.使用环境的不同,选择不同的延时 2.驱动机制不同 3.内核中的计算函数执行的函数 三.实测两类函数的延时以及原因 1.测试系 ...

  2. Linux进程睡眠状态disk sleep

    Linux进程睡眠状态disk sleep <Linux-进程管理> 1. Linux进程状态 Running(R):运行或将要运行 Interruptible(S):被阻断而等待一个事件 ...

  3. Linux 常用C函数说明-文件权限控制篇

    chdir(改变当前的工作(目录) 相关函数  getcwd,chroot 表头文件  #include<unistd.h> 定义函数  int chdir(const char * pa ...

  4. linux常用c函数(中文版)

    都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...

  5. Linux延时(延迟)函数比较:介绍Linux系统中常用的延时函数sleep、usleep、nanosleep、select和std::sleep_for()的区别和使用场景

    首先,需要了解各个睡眠函数的作用和使用场景. sleep函数用于让进程休眠指定的秒数,适用于需要较长时间的休眠场景: usleep函数用于让进程休眠指定的微秒数,适用于需要较短时间的休眠场景,不精确: ...

  6. Linux内核睡眠唤醒调试

    本文基于RockPI 4A单板Debian系统Linux4.4内核介绍下睡眠唤醒(suspend/resume)的一些调试方法. 一.参数设置 1.关闭串口睡眠 在Linux内核睡眠过程中,会先调用s ...

  7. linux c数字转字符串函数,Linux常用C函数—字符串转换篇

    Linux 常用C 函数-字符串转换篇 atof (将字符串转换成浮点型数) 相关函数 atoi ,atol ,strtod ,strtol ,strtoul 定义函数 double atof(con ...

  8. linux下syscall函数,SYS_gettid,SYS_tgkill

    出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html linux下syscall函数,SYS_gettid,SYS_tgkill 2014 ...

  9. linux中probe函数传递参数的寻找(下)

    点击打开链接 linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个 ...

最新文章

  1. matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)
  2. 长沙医学院计算机系怎么样,长沙医学院有哪些专业及什么专业好
  3. [YTU]_2535 (Problem I: C++复数运算符重载(+与))
  4. linkedHashMap源码解析(JDK1.8)
  5. 金山“云”上音乐节 —— 一文带你看懂如何支持一场线上演出
  6. 怎样在半个月内迅速提升技能,搞定面试进 大厂?
  7. SpringBoot中使用Hibernate Validator校验工具类
  8. es system call filters failed to install; check the logs and fix your configuration or disable syste
  9. 实习面试问题整理(一)
  10. android网格布局间距,android – 删除回收站视图网格布局中的默认间距
  11. 如何“ git clone”包括子模块?
  12. webgl 包围盒子
  13. javashop源码百度云,java电商系统源码分享,Javashop多用户商城源码
  14. 2020年度全球人工智能十大事件
  15. 效果图是怎么做出来的?
  16. 哪些是GraphPad Prism 的当前版本?如何更新或升级?
  17. 给程序员的 2018 新年计划清单
  18. B3U3 Text A Language Focus 共32词
  19. getchar函数的用法
  20. Google map获取手机屏幕当前显示地图的范围

热门文章

  1. 7-26 Windows消息队列
  2. Python 基础知识整理-2
  3. replace 替换全部的正确姿势
  4. html5录像功能限制时间,HTML5拍照和摄像机功能实战详解
  5. 大根堆的删除c语言,大根堆和小根堆的C语言实现
  6. matlab中求积函数,MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式.doc...
  7. 如何关闭苹果手机自动扣费_教你关闭苹果手机系统的自动更新功能,旧手机还能再用几年!...
  8. 计算机二级网址打不开,大神为你解决win7系统打不开二级网页链接的操作教程...
  9. html5css3js文件作业,HTML5 CSS3 JavaScriptWeb前端开发自测试卷2.docx
  10. C++网络编程快速入门(四):EPOLL模型使用