select()
関数とFD_ISSET
呼び出しの使用の違いは何かを見つけようとしています。それらのいずれかを使用することを正当化するさまざまなシナリオは何ですか?
3 に答える
Anfd_set
は、 への呼び出しで入力として使用されるビット配列select
です。
FD_ISSET
で特定のビットが設定されているかどうかを確認するために使用されfd_set
ます。
select
に設定されているビットに対応するすべてのファイル記述子をポーリングするために使用されますfd_set
。
一般的なシナリオは次のとおりです。
を作成してクリアしfd_set
ます。
監視するファイル記述子のビットを設定します。
コールセレクト。
FD_ISSET
for ループで呼び出します。特定のビットが設定されている場合、そのファイル記述子は読み取りの準備ができています (または書き込みまたはエラーがあります)。
select
Unix ライクなオペレーティング システムのシステム コールおよびアプリケーション プログラミング インターフェイスであり、開いている入出力チャネルのファイル記述子のステータスを調べることができます。したがって、select()
関数は、指定されたファイル記述子のどれが読み取りの準備ができているか、書き込みの準備ができているか、または保留中のエラー状態を持っているかを示します。
FD_ISSET
ファイル記述子セット内のファイル記述子の値を返します。これはヘッダー ファイルで宣言されます<sys/time.h>
。プロトタイプは、
int FD_ISSET(int fd, fd_set* fdset)
が指すファイル記述子セットにファイル記述子が設定されている場合はゼロ以外の値をfdset
返し、それ以外の場合は 0 を返します。