poll
ファイル、パイプ、デバイス、メッセージキュー etc
code:memo.c
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
int ppoll(struct pollfd *fds, nfds_t nfds,
const struct timespec *tmo_p, const sigset_t *sigmask);
code:c
struct pollfd {
int fd; /* file descriptor */
short events; /* requested events */
short revents; /* returned events */
};
pollfd.events
ファイルディスクリプタの監視するイベントを指定する
pollfd.revents
ファイルディスクリプタに実際に起こったイベントがカーネルにより設定される
events, reventsに設定されるイベント
POLLIN
読み出し可能なデータがある。
POLLPRI
読み出し可能な緊急データ (urgent data) がある (例えば、TCP ソケットの帯域外 (out-of-band data) データを受信した場合や、 パケットモードの擬似端末のマスタがスレーブ側の変化を見つけたとき)。
POLLOUT
書き込みが停止 (block) しない状態である。
POLLRDHUP (Linux 2.6.17 以降)
ストリームソケットの他端が、コネクションを close したか、 コネクションの書き込み側を shutdown した。 この定義を有効にするには、 (「どの」ヘッダファイルをインクルードするよりも前に) _GNU_SOURCE 機能検査マクロを定義しなければならない。
POLLERR
エラー状態 (出力の場合のみ)。
POLLHUP
ハングアップした (出力の場合のみ)。
POLLNVAL
不正な要求: fd がオープンされていない (出力の場合のみ)。
確認用
Q. poll
関連
参考