2009-02-22 14 views
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

を使用して失敗した接続からエラーを取得含まConnect with timeoutのセクションを、持っています。しかし、私が見ているのは、Linuxがこの目的のためにPOLLOUTまたはPOLLERRを使用しているということです。 –

関連する問題