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

名称
ライブラリ
書式
解説
戻り値
互換性
エラー
関連項目
バグ
歴史

jman



Time: 07:06:29 GMT, January 12, 2009