ヘッドを配管すると、Subversionでパイプ破損エラーが発生するのはなぜですか?

ヘッドを配管すると、Subversionでパイプ破損エラーが発生するのはなぜですか?

私が作ったら

svn log | head

10番目の出力行の後にエラーメッセージが表示されます。

svn: Write error: Broken pipe

ここで何が起こっているのでしょうか?私はそれと一緒に使用された他のコマンドを見たことがありませんhead。 SubversionはUnixフィルタリングパラダイムには適していませんか?

ベストアンサー1

反対側の端が閉じたパイプに書き込まれると、通常はSIGPIPEシグナルを受けて死にます。ただし、以前のようにシグナルを無視することを選択した場合は、svn戻ってwrite英語の翻訳を「Broken Pipeline」に設定してください-1。標準出力に何かを書き込むことができない場合は、対応するエラーメッセージを表示するように選択します。errnoEPIPEsvn

head入力に10行を書き込んで終了し、パイプを閉じます。svnもうパイプには何も書けません。 SIGPIPEが無視されない場合、ほとんどのアプリケーションはデフォルトの動作で自動的にシャットダウンされます。何らかの理由で(おそらく死ぬ前に追加の作業を行う必要があるため)、SIGPIPEを無視することを選択し、svnパイプのエラー状態を確認してパイプに書き込むことができないと判断します。write

同じエラーが発生します。

bash -c 'trap "" PIPE; while echo foo; do :;done' | head

望むより:

strace -e write seq 10000 | head

(Linuxの場合)SIGPIPEを無視しないときのデフォルトの動作を確認してください。

おすすめ記事