[解決済み] Broken Pipe Errorの原因は何ですか?
2022-03-01 21:53:49
質問
相手側のソケットを閉じたときにパイプ切れエラーが発生するのは知っています。
しかし、私のテストでは、相手側が閉じているときにこちら側ですぐに「送信」を呼び出すと、必ずしもパイプ破損エラーになるとは限らないことに気づきました。
例えば
ピア側でソケットを閉じた後(closeを呼んできれいに閉じたり、ピアを殺して異常終了したりしました)、40バイトを送信しようとすると、パイプは壊れませんが、40000バイトを送信しようとすると、すぐにパイプ切れエラーが発生します。
パイプ破損の原因は何でしょうか、またその挙動を予測することは可能でしょうか?
解決方法は?
ネットワーククローズが観測されるまでには時間がかかることがあります。ポート宛てのパケットがすべて死んだとみなされるまでの合計時間は、クローズ後、公称約2分(そう、分です!)です。 エラー状態は、ある時点で検出されます。 小さな書き込みでは、システムのMTUの内側なので、メッセージは送信のためにキューに入れられます。 大きな書き込みの場合は、MTUより大きいので、システムは問題をより早く発見します。 SIGPIPEシグナルを無視した場合、関数は壊れたパイプでEPIPEエラーを返します - 接続が壊れていることが検出された時点で、です。
関連
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】malloc():メモリ破壊
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】strcmpが機能しない
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開