2017-04-14 88 views
1

我想运行超时程序。堵,疏通和提高SIGALRM和SIGVTALRM:我使用timeout命令这样超时命令使用的信号

timeout 5 path/to/program 

program按照时间相关的信号做。我不知道如何timeout工作,但我想它也使用时间信号。我应该担心来自program的信号干扰timeout,反之亦然?

+0

'timeout --version'的输出是什么?现代版的超时应该可以正常工作,因为它们在单独的进程中运行目标程序,并且不在该进程中设置任何计时器。 –

+0

'超时(GNU coreutils)8.25'这是否够现代? – Jona

+0

我查看了8.25源代码,并没有在目标程序中设置定时器。另一种在Linux上检查的方法是运行'timeout 10 cat/proc/self/timers'。 –

回答

0

默认情况下,timeout将发送SIGTERM(除非您使用-s更改)。因此,你不应该看到任何其他信号的冲突。

仅供参考,如果程序退出超时,则返回值为124。你可以使用-k SECONDS强制杀死(如果它没有优雅地死掉),然后返回值为137

+0

谢谢你的回答,但它并不完全回答我的问题。我怀疑'超时'内部逻辑使用'ALRM'信号,这可能会干扰我的程序。我应该关心**那**吗? – Jona