2016-08-25 21 views
0

誰かがtimeoutがパイプコマンドに対してどのように機能するか説明できますか?例えば、ここで パイプコマンドのタイムアウト呼び出し

timeout 2s a | b 

aコマンドにのみ適用される timeoutのですか?
タイムアウトが実際に発生した場合、パイプが壊れますか?

+2

はい、 'timeout'は標準のコマンドであり、組み込みではないので、' timeout'、 '2s'、' a'の引数で実行されます。タイムアウトが発生した場合、 'b'のパイプはそのパイプ内のすべてのデータが読み込まれた時点でEOFを示します(パイプに書き込む処理が残っていないため)。しかし、破損したパイプは、書き込み側では問題であり、読み取り側では問題ではありません。 –

+0

@JonathanLeffler:ありがとう、素敵なメモ: – sjsam

答えて

1

はい、timeoutは組み込みコマンドではないので、引数timeout,2sおよびaで実行されます。タイムアウトが発生すると、bにあるパイプの読み込み側は、その中のすべてのデータが読み込まれると(パイプに書き込む処理が残っていないため)EOFを示します。しかしbは、(タイムアウトのためかタイムアウトの前に終了したのかにかかわらず)aからのSIGPIPE信号を出力しません。破損したパイプは、読み取り側ではなく書き込み側で問題となります。

関連する問題