POLL
Section: System Calls (2)
索引
jman
BSD mandoc
索引
名称
poll
- 同期的な入出力の多重化
索引
ライブラリ
Lb libc
索引
書式
In poll.h
Ft int
Fn poll struct pollfd fds[] nfds_t nfds int timeout
索引
解説
Fn poll
システムコールはファイル記述子の集合を調査して、
それらのいずれかで入出力の準備ができているか否かを調べます。
Fa fds
引数は
In poll.h
で定義された pollfd 配列を指すポインタ (後述) です。
Fa nfds
引数は
Fa fds
配列のサイズを決定します。
struct pollfd {
int fd; /* ファイル記述子 */
short events; /* 検索するイベント */
short revents; /* 返されたイベント */
};
Fa struct pollfd
のフィールドは次のとおりです:
- fd
-
調査するファイル記述子。
もし fd が -1 なら
Fa revents
はクリアされ (0 に設定)、pollfd はチェックされません。
- events
-
調査するイベント (後述)。
- revents
-
発生したイベント (後述)。
Fa events
と
Fa revents
内のビットマスクには次のビットがあります:
- POLLIN
-
高優先データ以外のデータはブロックせずに読取りできます。
- POLLRDNORM
-
通常データはブロックせずに読取りできます。
- POLLRDBAND
-
優先順位が 0 でないデータはブロックせずに読取りできます。
- POLLPRI
-
高優先データはブロックせずに読取りできます。
- POLLOUT
-
- POLLWRNORM
-
通常データはブロックせずに書き込めます。
- POLLWRBAND
-
優先順位が 0 でないデータはブロックせずに書き込めます。
- POLLERR
-
デバイスまたはソケット上に例外状態が起きました。
このフラグは、
Fa events
ビットマスクに存在していなくても必ずチェックされます。
- POLLHUP
-
デバイスまたはソケットが切断されています。
このフラグは、
Fa events
ビットマスク内に存在しなくても必ずチェックされます。
POLLHUP
と
POLLOUT
は、
Fa revents
ビットマスク内に同時に存在することが決してないことに注意してください。
- POLLNVAL
-
ファイル記述子がオープンされていません。
このフラグは、
Fa events
ビットマスク内に存在しなくても必ずチェックされます。
Fa timeout
が 0 でも INFTIM (-1) でもない場合、この値はいずれかのファイル記述子が
準備完了になるのを待機する最大間隔 (ミリ秒単位) です。
Fa timeout
が INFTIM (-1) の場合、
Fn poll
は無期限にブロックします。
Fa timeout
が 0 の場合
Fn poll
はブロックせずに戻ります。
索引
戻り値
Fn poll
システムコールは入出力の準備が完了した記述子の番号を返します。
エラーが起きた場合は -1 を返します。
時間切れになると
Fn poll
は 0 を返します。
システムコールが割り込まれたことによるエラーも含めて
Fn poll
がエラーで戻った場合、
Fa fds
配列は変更されません。
索引
互換性
この実装は、ファイル記述子によって
Fn poll
がエラーにならないという点で、過去のものと異なっています。
過去の実装においてエラーになるであろう場合 (たとえば
revoke(2)
された記述子を検査しようとした場合)、この実装は代わりに
Fa events
ビットマスクを
Fa revents
ビットマスクにコピーします。
この記述子上で入出力を実行しようとするとエラーが返されます。
この動作はより便利であると考えられています。
索引
エラー
Fn poll
は次のエラーで戻ります:
- Bq Er EFAULT
-
Fa fds
引数は、プロセスに割り当てられたアドレス空間の範囲外を指しています。
- Bq Er EINTR
-
時間切れになる前に、そして選択されたイベントが発生する前に
シグナルを受信しました。
- Bq Er EINVAL
-
時間制限として負の値が指定されました。
索引
関連項目
accept(2),
connect(2),
kqueue(2),
read(2),
recv(2),
select(2),
send(2),
write(2)
索引
バグ
Fa events
ビットマスクと
Fa revents
ビットマスクのいくつかのフィールド間の違いは、
STREAMS 以外では実用的ではありません。
それらのフィールドは、既存のソフトウェアとの互換性を
保つために定義されています。
索引
歴史
Fn poll
関数は
AT&T System
V
で登場しました。
このマニュアルページと実装の主要な部分は
Nx から得たものです。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 戻り値
-
- 互換性
-
- エラー
-
- 関連項目
-
- バグ
-
- 歴史
-
Time: 07:06:29 GMT, January 12, 2009