Linux 里有个命令叫 timeout,它可以控制一个进程的最大执行时间,超时就会被 这个命令主动终结。

源码:https://github.com/coreutils/coreutils/blob/master/src/timeout.c

用法timeout 30 ./a.out a.out 程序最长可以执行 30s,如果 30s 内没有结束,则会被强制终止,并且最终整个 timeout 命令返回一个错误码 (echo $? 可以查看)

实现:timeout 启动后
(1)先启动目标进程(如 a.out)
(2)给自己注册一个 timer(api 是 setitimer
(3)时间到后自己收到 timer signal
(4)在 timer signal handler 里向目标进程发送中断信号
(5)发完中断信号后 timeout 进程退出并设置返回值

点评timeout.c 整个程序不长,但是要完全看明白每一行代码是做什么的,需要对 Linux 里的基本概念要了熟于心,对 Linux 信号处理理解非常到位,对 Linux 编程非常熟悉。很值得用来做 Linux 编程入门的研习参考。

感想:timeout 这样的实用小程序真的是非常实用,把实用小程序汇编起来,就能发挥大作用。更多实用小程序可以参考 https://github.com/coreutils/coreutils/tree/master/src 目录,有心人可以基于这个写出一本书。

Linux timeout 命令相关推荐

  1. Linux timeout命令的使用:timeout - run a command with a time limit

    timeout是一个命令行实用程序,它运行指定的命令,如果在给定的时间段后仍在运行,则终止该命令.timeout命令是GNU核心实用程序软件包的一部分,该软件包几乎安装在所有Linux发行版中. NA ...

  2. linux 读取命令行输入,Linux read命令的使用

    1.命令简介 read命令是Shell内建命令,用于从标准输入或-u选项指定的文件描述符中读取单行,并将读取的单行根据IFS变量分割成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name ...

  3. linux 网络 read,Linux read命令的使用

    1.命令简介 read命令是Shell内建命令,用于从标准输入或-u选项指定的文件描述符中读取单行,并将读取的单行根据IFS变量分割成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name ...

  4. Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)

    目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...

  5. linux的帮助命令有,Linux帮助命令有哪些

    当我们自学Linux时候,常常会遇到各种问题,对于命令方面,遇到问题我们可以用帮助命令,那么具体有哪些呢,下面由学习啦小编为大家整理了linux的帮助命令的相关知识,希望对大家有帮助! 查看linux ...

  6. python远程linux服务器执行命令_基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上 ...

  7. linux基础命令之一

    1.cpio cpio(copy in/out) 功能说明:备份文件. 语 法:cpio [-0aABckLovV][-C <输入/输出大小>][-F <备份档>][-H &l ...

  8. linux ping -w 命令,Linux ping 命令

    Linux ping 命令 Linux ping 命令用于检测主机. 执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运 ...

  9. linux 下载 命令 wget 和 curl

    From:http://www.jb51.net/LINUXjishu/86326.html From :Linux curl 命令详解 - http://www.cnblogs.com/duhuo/ ...

最新文章

  1. linux注销、关机、重启
  2. 不用任何软件消除mp3的乱码
  3. PHP接口允许ajax跨域访问设置方法(亲测)
  4. spring多个视图解析器_在Spring中配置多个View解析器
  5. mysql 连续签到天数_签到功能实现,没有你想的那么复杂(一)
  6. .Net笔试题 有答案
  7. 楼宇自控ba系统 服务器,楼宇自控BA系统
  8. 第十一届蓝桥杯省赛C++组试题 第5题
  9. Vmware 中Linux中NAT网络异常解决方法
  10. linux安装java、配置 jmeter
  11. Oracle如何实现跨库查询
  12. Datawhale组队学习(Pandas) task8-文本数据
  13. 一些西安附近的旅游信息
  14. 用Python获取磁力种子
  15. NDIS Filter Drivers指南
  16. java excel 饼图,java 导入导出excle 和 生成柱状图饼状图的demo/excle数据如何转成饼状图...
  17. IntelliJ:idea取消启动时的默认工作空间,打开欢迎页面
  18. 做回归分析时import ConvergenceWarning出错的问题
  19. [kuanbin带我飞]的专题1---简单搜索
  20. 秘密潜入1-榴弹枪射速修改-Python源码

热门文章

  1. 多尺度计算机模拟方法,多尺度问题的数值模拟.pdf
  2. 二进制整数及其表达方式
  3. 2022年汽车配件市场分析
  4. matlab试判断稳定性,MATLABsimulink稳定性分析时域分析
  5. 离散系统的稳定性分析
  6. 谢启鸿老师思考题及解答合集
  7. opencv学习-均值滤波blur
  8. 快速连接github(修改hosts文件)
  9. 洛谷 P1941 飞扬的小鸟
  10. 知道创宇 二级安全公司 骗取面试人源码,长见识了啊。