2017-04-14 12 views
1

タイムアウトを指定してプログラムを実行したい。ブロック解除とSIGALRMとSIGVTALRMを高め、ブロック:私は、時間関連信号を使用しているこのtimeoutコマンドで使用される信号

timeout 5 path/to/program 

programようtimeoutコマンドを使用して、それをやっています。私はどのようにtimeoutの作品を知りませんが、私はそれも時間信号を使用すると思います。 programからの信号がtimeoutに干渉するのではないかと心配すべきですか?

+0

'timeout --version'の出力は何ですか?最近のバージョンのタイムアウトは、ターゲットプログラムを別のプロセスで実行し、そのプロセスでタイマーを設定しないため、正常に動作するはずです。 –

+0

'timeout(GNU coreutils)8.25'これで十分ですか? – Jona

+0

私は8.25のソースを見て、ターゲットプログラムのタイマーを設定しません。 Linuxでこれをチェックする別の方法は 'timeout 10 cat/proc/self/timers'を実行することです。 –

答えて

0

デフォルトでは、timeoutSIGTERMを送信します(-sで変更しない限り)。したがって、他の信号と競合することはありません。

FYI、プログラムがタイムアウトによって終了した場合、戻り値は124になります。 -k SECONDSを使用して殺しを強制することができます(それが正常に終了しない場合)。その結果、戻り値は137になります。

+0

答えをありがとう、それは完全に私の質問に答えるわけではありません。私は 'timeout'内部ロジックが' ALRM'シグナルを使用していると思われます。これが私のプログラムを妨げるかもしれません。私は**その**について心配する必要がありますか? – Jona