エラーを検出するにはexcludefdsが必要であると考えられることもありますが、それは誤解です。エラーはreadfdsでフラグが付けられます。POSIXはそれを必要としますが(そしてパラメータerrorfdsを呼び出すことさえあります)、エラーがexceptfdsでもフラグ付けされるかどうかはOSに依存します。実際、このパラメーターが必要になるのは、例外的な条件を気にする場合だけですが、それらを検出する必要があることはめったにありません。
例外条件と見なされるものはファイル記述子の種類によって異なりますが、最も一般的な使用法はrecv()
、MSG_OOB
フラグを使用して帯域外データを読み取ることができることを示すTCPソケットです。ただし、TCP帯域外データには多くの癖があり(たとえば、1バイトのみが未処理である可能性があります)、その結果、ほとんど使用されません。
最近のLinuxカーネルでは、 fdsを除いて、特定のsysfs属性がいつ変更されたかを検出するために使用できます。属性の現在の値は、の下の適切なファイルを読み取ることで読み取ることができ、ファイル記述子の/sys
aは、属性が変更されたときにexceptfdsにフラグを立てます。ただし、これは現在、一部の属性とマウントの変更()に対してのみ機能します。select()
/proc/mounts
また、一部のデバイスドライバーは、exceptfdsを使用して特定のデバイス固有の条件にフラグを立てます。