問題タブ [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.
c++ - C++ の Linux での偽の SIGPIPE
明らかな理由もなく SIGPIPE について聞いたことがある人はいますか? SIGPIPE でクラッシュしたプログラムがあります。signal(SIGPIPE, SIG_IGN); でクラッシュを防ぎました。好奇心から、私は他に何もしませんでした。つまり、エラー処理はしませんでした。驚いたことに、コードは正常に動作します。1 つのソケットを介して別のプログラムと通信します。また、ソケットを介したデータ転送は、SIGPIPE の後でも完全に機能します。これは可能ですか?一時的なネットワーク障害による SIGPIPE?
sockets - write() 使用時の SIGPIPE エラー
USB デバイスを開いたときに返されたファイル記述子に書き込もうとすると、SIGPIPE エラーが発生します。一日中読むことはできますが、書き込むことはできません。以下はコードです:
基本的には、最初に「open()」関数から返されたファイル記述子「fd」に書き込みできるようにスレッドを設定しました。書き込みを試みるたびにエラーが発生します。しかし、前にも言ったように、問題なく一日中読むことができます。
サイドノート fd をチェックして、正しいものに書き込んでいることを確認しました。間違いなくそうです。
SIGPIPE エラーを調査したところ、リモート エンドで fd が閉じられたときに発生すると誰もが言っていることがわかりました。では、そのファイル記述子を閉じるにはどうすればよいのでしょうか? #2デバイスが閉じている場合、同じファイル記述子でデバイスから読み取ることができますか?
c - ピアによって閉じられた TCP ソケットへの書き込み
私は、TCPソケットを介して両側が通信するクライアントサーバーアプリケーションを持っています。
接続を適切に確立し、クライアントによってソケットにデータが書き込まれる前にサーバーをクラッシュさせます。
私が見ているのは、最初のwrite()
試行 (クライアント側) が成功し、実際に書き込まれたバイト数が返されるのに対して、次の試行では (期待どおり) -1
(a を受け取るSIGPIPE
) とerrno=EPIPE
.
write()
ソケットが既に閉じられている場合でも、最初の方法が成功するのはなぜですか?
EDITwrite()
すべてがうまくいっているかのように、次のものが正の戻り値を持つ
こともあります。
c - シンプルな 2 プロセス プログラムでの SIGPIPE
以前に使用したフォークとパイプの簡単なセットアップがあります。しかし、今度は電話がかかっSIGPIPE
てきwrite
ます。これがコードです
関数 foo は次のとおりです。
bash - bashでパイプされたプログラムを終了するポリシーは何ですか?
パイプされたプログラムはいつ終了し、誰がこの終了プロセスを制御しますか? Bashを読みました: なぜパイプが終了するのですか? しかし、この質問は部分的にしかカバーしていません。この質問に自分で答えようとした後、出力を確認するためにいくつかの例を作成しました。そして、これは私には理解できません: ( a.sh
):
そして、私はそれを実行し./a.sh | head -3
ます。出力は次のとおりです。
出力から、最初の 3 行の入力を読み取った後、これ以上データが必要ないため、シグナル./a.sh
で終了したことがわかりました。SIGPIPE
しかし、行 1または行 2 のいずれかを削除すると、出力は次のように変わります。
だから私の質問は:
- パイプされたプログラムを終了するポリシーは何ですか?
- 行 1 がプログラムの動作に影響を与えるのはなぜですか?
- 行 2 がプログラムの動作に影響を与えるのはなぜですか?
c - プログラム受信シグナル SIGPIPE、壊れたパイプ
posix ソケットに基づいてクライアント プログラムを作成します。プログラムは複数のスレッドを作成し、サーバーをロックしようとしています。しかし、gdb 時間でのデバッグ中に、プログラムは情報 (エラー) を提供します
コードは次のとおりです。
それは何ですか?
c - SIGPIPE (OSX) と切断されたソケット?
TCP経由でサーバーに接続するアプリに取り組んでいます。
なんらかの理由でソケットが閉じられた場合、SIGPIPE ハンドラーに行き着きます。
recv と send が切断/クローズされたソケットでエラーを返すようにするにはどうすればよいですか?
ありがとう