2009-10-15 99 views
1

我有一个启动的作业,我已配置为运行我的单元测试。偶尔,单元测试会挂起(通常是因为一些错误的代码)。我知道我的测试通常只需要几分钟即可完成。当他们挂起时,我通常不会注意到它大约一个小时,此时我必须弹出“活动监视器”并手动强制终止我的测试。我想启动为我做这个。我怎么能在一段时间后自动杀死我的工作(如果它仍在运行)?启动作业的自动超时

我一直在寻找在launchd man page,而且我发现了几个有前途的键(如TimeOutExitTimeOut),但在描述措辞好像它并不完全符合我要找的。

回答

1

TimeOutExitTimeOut后,我断定似乎没有办法让launchd在一定的时间间隔后终止进程。

我最终将所需的代码添加到我的程序本身。 (我的程序不仅仅是单元测试)

2

launchd无法知道或关心您的过程所做的任何事情。只要它没有退出几秒钟,它就很高兴。

0

(注:这些是半原始想法,而不是抛光溶液)

一种可能性是使用的launchd的看门狗功能。如果您可以自定义单元测试以在启动时触摸文件,则可以在感应该文件时启动单独的启动任务。如果单元测试脚本没有在指定的时间间隔内删除文件,那么它应该被终止。为此,您可以让看门狗任务启动一个脚本,获取单元测试的PID,休眠所需的时间间隔,然后杀死单元测试,如果该过程仍在运行。因人而异。

+0

这与我最终实现的类似,除了我的程序中作为第二个线程运行。 – 2009-10-16 15:29:55