プロセスについて「書き込み:壊れたパイプ」エラーが複数表示されるとはどういう意味ですか?

プロセスについて「書き込み:壊れたパイプ」エラーが複数表示されるとはどういう意味ですか?

write: broken pipeプロセスにエラーが多いとはどういう意味ですか?

level=error msg="attach: stdout: write unix /var/run/docker.sock->@: write: broken pipe"

これは、プロセスにより多くのファイル記述子が必要であるという意味ですか?それとも別のリソースがありますか?どちらに見なければなりませんか?

ベストアンサー1

これは、誰かがシグナルハンドラをSIGPIPESIG_IGN無視)に設定し、エラー(リーダのないパイプに書き込もうとする)が代わりに終了状態で報告されることを意味しますwrite(2)

あなたの場合、Unixソケットのもう一方の端にあるプログラムが予期せずクラッシュまたは終了した可能性があります。まず見てみましょう。

それおそらくいくつかの洗練された攻撃 - 誤って書かれた多くのプログラムはエラーを予期せず、write(2)戻り値をチェックしません。

によって終了するプロセスSIGPIPEには特別なものはなく、これが機能する方法です。これがcommand | head -5うまくいく方法です。command終了後もパイプに書き続けたい場合は、パイプを受け取り、すべてが正常に終了します。ただし、コマンドがシグナルハンドラをインストールした場合、またはコールシェルがaを設定すると(それ自体と子プロセスがシグナルを無視する)、パイプに入るすべての項目が返され(「壊れたパイプ」)に設定されます。この点で、ソケットはパイプと同じように動作します。head -5SIGPIPESIGPIPEtrap '' PIPESIGPIPEwrite(2)-1errnoEPIPE

おすすめ記事