2017-04-14 107 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