select()

Last-modified: 2007-01-26 (金) 01:37:08

[star] 複数のファイルディスクリプタを監視し、変化があるまで待つ
long select (
  int nfds,
  fd_set * readfds,
  fd_set * writefds,
  fd_set * exceptfds,
  const struct timeval * timeout
);

[tip] パラメータ

nfds

  • [in] BSDソケットとの互換を保つためにあるので、無視される。
    • 本来は、調べるディスクリプタの数を指定。0を指定すれば何もしない。1を指定すれば0番目。よって、ビットが立っている番号 +1の値を指定することになる

readfds

  • [in, out] 入力可能か調べるファイルディスクリプタの指定

writefds

  • [in, out] 出力可能か調べるファイルディスクリプタの指定

exceptfds

  • [in, out] エラーが発生したか調べるファイルディスクリプタの指定

timeout

  • [in] タイムアウトする時間の指定。NULLを指定するべき

[tip] 返り値

  • 成功した場合、ディスクリプタ中のビットが立っている総数を返す。
  • エラーならば、-1を返す。
  • タイムアウトした場合、0を返す。

(^-^ NOTE