問題タブ [sigpipe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
728 参照

c++ - C++ の Linux での偽の SIGPIPE

明らかな理由もなく SIGPIPE について聞いたことがある人はいますか? SIGPIPE でクラッシュしたプログラムがあります。signal(SIGPIPE, SIG_IGN); でクラッシュを防ぎました。好奇心から、私は他に何もしませんでした。つまり、エラー処理はしませんでした。驚いたことに、コードは正常に動作します。1 つのソケットを介して別のプログラムと通信します。また、ソケットを介したデータ転送は、SIGPIPE の後でも完全に機能します。これは可能ですか?一時的なネットワーク障害による SIGPIPE?

0 投票する
0 に答える
661 参照

sockets - write() 使用時の SIGPIPE エラー

USB デバイスを開いたときに返されたファイル記述子に書き込もうとすると、SIGPIPE エラーが発生します。一日中読むことはできますが、書き込むことはできません。以下はコードです:

基本的には、最初に「open()」関数から返されたファイル記述子「fd」に書き込みできるようにスレッドを設定しました。書き込みを試みるたびにエラーが発生します。しかし、前にも言ったように、問題なく一日中読むことができます。

サイドノート fd をチェックして、正しいものに書き込んでいることを確認しました。間違いなくそうです。

SIGPIPE エラーを調査したところ、リモート エンドで fd が閉じられたときに発生すると誰もが言っていることがわかりました。では、そのファイル記述子を閉じるにはどうすればよいのでしょうか? #2デバイスが閉じている場合、同じファイル記述子でデバイスから読み取ることができますか?

0 投票する
3 に答える
5113 参照

c - ピアによって閉じられた TCP ソケットへの書き込み

私は、TCPソケットを介して両側が通信するクライアントサーバーアプリケーションを持っています。

接続を適切に確立し、クライアントによってソケットにデータが書き込まれる前にサーバーをクラッシュさせます。
私が見ているのは、最初のwrite()試行 (クライアント側) が成功し、実際に書き込まれたバイト数が返されるのに対して、次の試行では (期待どおり) -1(a を受け取るSIGPIPE) とerrno=EPIPE.

write()ソケットが既に閉じられている場合でも、最初の方法が成功するのはなぜですか?

EDITwrite()すべてがうまくいっているかのように、次のものが正の戻り値を持つ こともあります。

0 投票する
1 に答える
1604 参照

c - シンプルな 2 プロセス プログラムでの SIGPIPE

以前に使用したフォークとパイプの簡単なセットアップがあります。しかし、今度は電話がかかっSIGPIPEてきwriteます。これがコードです

関数 foo は次のとおりです。

0 投票する
1 に答える
117 参照

bash - bashでパイプされたプログラムを終了するポリシーは何ですか?

パイプされたプログラムはいつ終了し、誰がこの終了プロセスを制御しますか? Bashを読みました: なぜパイプが終了するのですか? しかし、この質問は部分的にしかカバーしていません。この質問に自分で答えようとした後、出力を確認するためにいくつかの例を作成しました。そして、これは私には理解できません: ( a.sh):

そして、私はそれを実行し./a.sh | head -3ます。出力は次のとおりです。

出力から、最初の 3 行の入力を読み取った後、これ以上データが必要ないため、シグナル./a.shで終了したことがわかりました。SIGPIPEしかし、行 1または行 2 のいずれを削除すると、出力は次のように変わります。

だから私の質問は:

  • パイプされたプログラムを終了するポリシーは何ですか?
  • 行 1 がプログラムの動作に影響を与えるのはなぜですか?
  • 行 2 がプログラムの動作に影響を与えるのはなぜですか?
0 投票する
5 に答える
90842 参照

c - プログラム受信シグナル SIGPIPE、壊れたパイプ

posix ソケットに基づいてクライアント プログラムを作成します。プログラムは複数のスレッドを作成し、サーバーをロックしようとしています。しかし、gdb 時間でのデバッグ中に、プログラムは情報 (エラー) を提供します

コードは次のとおりです。

それは何ですか?

0 投票する
6 に答える
2503 参照

c - SIGPIPE (OSX) と切断されたソケット?

TCP経由でサーバーに接続するアプリに取り組んでいます。

なんらかの理由でソケットが閉じられた場合、SIGPIPE ハンドラーに行き着きます。

recv と send が切断/クローズされたソケットでエラーを返すようにするにはどうすればよいですか?

ありがとう