Go での壊れたパイプ エラーの判断
ソケットに関係する IO 操作を実行するとき、壊れたパイプ エラーが発生するのが一般的です。これらのエラーは、リモート ホストが接続を切断し、「書き込み」操作が失敗したことを示します。
宛先としてソケットを含む io.Copy 呼び出しからエラーを受け取った場合は、次のことが考えられます。次のエラー メッセージが表示されます:
"write tcp 192.168.26.5:21277:壊れたパイプ"
壊れたパイプ エラーを他のタイプのエラーと区別するには、Go syscall パッケージを利用できます。 syscall.EPIPE 定数は、パイプ破損エラーを示します。等価演算子を使用してエラーを syscall.EPIPE と比較できます:
<code class="go">if err == syscall.EPIPE { // Ignore the error since it's a broken pipe }</code>
また、エラーに対して型アサーションを実行して実際のエラー番号を取得することもできます:
<code class="go">if e, ok := err.(syscall.Errno); ok { errno = uintptr(e) }</code>
この方法では、エラー番号を直接操作できますが、ほとんどの場合、その有用性は限定的です。パイプ切れエラーをフィルタリングして除外することで、それらを適切に処理し、予期しない接続の切断によってアプリケーションがクラッシュしないようにすることができます。
以上がGo で壊れたパイプエラーを特定して処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。