我想运行超时程序。堵,疏通和提高SIGALRM和SIGVTALRM:我使用timeout
命令这样超时命令使用的信号
timeout 5 path/to/program
program
按照时间相关的信号做。我不知道如何timeout
工作,但我想它也使用时间信号。我应该担心来自program
的信号干扰timeout
,反之亦然?
我想运行超时程序。堵,疏通和提高SIGALRM和SIGVTALRM:我使用timeout
命令这样超时命令使用的信号
timeout 5 path/to/program
program
按照时间相关的信号做。我不知道如何timeout
工作,但我想它也使用时间信号。我应该担心来自program
的信号干扰timeout
,反之亦然?
默认情况下,timeout
将发送SIGTERM
(除非您使用-s
更改)。因此,你不应该看到任何其他信号的冲突。
仅供参考,如果程序退出超时,则返回值为124
。你可以使用-k SECONDS
强制杀死(如果它没有优雅地死掉),然后返回值为137
。
谢谢你的回答,但它并不完全回答我的问题。我怀疑'超时'内部逻辑使用'ALRM'信号,这可能会干扰我的程序。我应该关心**那**吗? – Jona
'timeout --version'的输出是什么?现代版的超时应该可以正常工作,因为它们在单独的进程中运行目标程序,并且不在该进程中设置任何计时器。 –
'超时(GNU coreutils)8.25'这是否够现代? – Jona
我查看了8.25源代码,并没有在目标程序中设置定时器。另一种在Linux上检查的方法是运行'timeout 10 cat/proc/self/timers'。 –