Skip to content
Latchkey

SIGPIPEとは?

SIGPIPEは、プロセスが読み手のいなくなったpipeまたはsocketへ書き込もうとしたときにkernelが発生させるsignalです。そのデフォルト動作は書き込み側プロセスを終了させることで、これがdownstreamのコマンドが早く終了するとupstreamのコマンドをkillしうる理由です。動き続けたいプログラムは、代わりにこれを無視し、結果として生じる書き込みエラーを処理します。

なぜ重要か

CIのshell pipelineでのbroken-pipe失敗は、後続のコマンドが先のコマンドの書き込み完了前に終了したときのSIGPIPEであることが多いです。これを見分けられれば、一見不可解な早期終了を説明できます。

関連ガイド