我想運行超時程序。堵,疏通和提高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'。 –