免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2855 | 回复: 3

[C] linux里如何让一个程序运行30秒然后被kill??? [复制链接]

论坛徽章:
0
发表于 2008-07-26 21:35 |显示全部楼层
因为对时间要的求不是很精确,我是用sleep和signal来做定时运行.

test case的话,只想让tshark运行30秒,然后tshark被kill pid,然后等10分钟,tshark程序再运行

但是我是在程序里用SYSTEM来向console发命令的,所对好像是在定时器这些方面有问题,让tshark 运行30秒,做不出来效果。

我在main()里是这么写的

system("tshark > logtext.txt &echo $! > tsharkpid"); // 发tshark命令,写 tshark pid到文件里

/*
这里要怎么写,才能让tshark 跑上30秒??????????
*/

system("kill `cat tsharkpid`"); //kill tshark by pid

sleep(600);  //让主程序等十分钟后再运行,
sigqueue(getpid(), 50, tsval);//恢复运行

[ 本帖最后由 dovefay 于 2008-7-26 22:59 编辑 ]

论坛徽章:
0
发表于 2008-07-27 02:01 |显示全部楼层
sleep+alarm

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2008-07-27 07:45 |显示全部楼层
别总想着用system解决问题。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2008-07-27 08:05 |显示全部楼层
man timeout
  1. flw@Sleeper:~$ aptitude show timeout
  2. 软件包:timeout
  3. 状态: 已安装
  4. 自动安装: 是
  5. 版本号:1.11-6.5
  6. 优先级:可选
  7. 部分:admin
  8. 维护者:Andrew Stribblehill <[email]ads@debian.org[/email]>
  9. 未压缩尺寸:24.6k
  10. 依赖于: libc6 (>= 2.7-1)
  11. 冲突: netatalk (< 1.5pre6-7), tct (<= 1.07-2)
  12. 代替: netatalk (< 1.5pre6-7), tct (<= 1.07-2)
  13. 描述:Run a command with a time limit.
  14. timeout executes a command and imposes an elapsed time limit. When the time limit is reached, timeout sends a predefined signal
  15. to the target process.

  16. 标签: interface::commandline, role::program, scope::utility, use::timekeeping, works-with::software:running

  17. flw@Sleeper:~$
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP