非同期ソケットからのエラー報告はどのようにして行われますか?


7

ソケットを非同期で接続しています(O_NONBLOCK + connect)。 POSIX標準では、ソケットが接続された後に、ソケットのファイル記述子を書き込み可能状態にすることによってイベントを通知する必要があることを指定しています。非同期接続中の失敗については何も言わないようです。

Linuxでテストすると、この状況でPOLLOUTとPOLLERRが表示されることがあります。行動にはどんなパターンがありますか?エラーを単一の方法で報告することはできますか? POSIXは私が見落としたことを言っていますか?

4

D. J. Bernsteinには関連性のあるものがいくつかあります:http://cr.yp.to/docs/connect.html。特に、彼はエラーを出すためのいくつかの異なる方法を提案しています。

UNIXソケットFAQはどちらもテキストが接続がPOLLOUTイベントによる接続成功/失敗についてユーザーに通知することを前提としgetsockopt

  0

を使用して失敗した接続からエラーを取得含ま<a href="http://www.developerweb.net/forum/showthread.php?t=3196" rel="nofollow noreferrer">Connect with timeout</a>のセクションを、持っています。しかし、私が見ているのは、Linuxがこの目的のためにPOLLOUTまたはPOLLERRを使用しているということです。 22 2月. 092009-02-22 11:28:09