.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH POLL 2 2014\-01\-31 Linux "Linux Programmer's Manual"
+.TH POLL 2 2014\-09\-06 Linux "Linux Programmer's Manual"
.SH 名前
poll, ppoll \- ファイルディスクリプタにおけるイベントを待つ
.SH 書式
\fBint poll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, int \fP\fItimeout\fP\fB);\fP
.sp
\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+\fB#include <signal.h>\fP
\fB#include <poll.h>\fP
.sp
\fBint ppoll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, \fP
.PP
\fInfds\fP には、 \fIfds\fP 配列の要素数を指定する。
-\fIfd\fP フィールドには、オープンされたファイルのファイルディスクリプタが入る。
-このフィールドが負の場合、対応する \fIevents\fP フィールドは無視され、
-\fIrevents\fP には 0 が返される。(この機能により、一つの \fBpoll\fP() の呼び出しで
-簡単にあるファイルディスクリプタを無視することができる。
-単に \fIfd\fP フィールドの符号を反転するだけでよい。)
+\fIfd\fP フィールドには、オープンされたファイルのファイルディスクリプタが入る。 このフィールドが負の場合、対応する \fIevents\fP
+フィールドは無視され、 \fIrevents\fP には 0 が返される。(この機能により、一つの \fBpoll\fP()
+の呼び出しで簡単にあるファイルディスクリプタを無視することができる。 単に \fIfd\fP フィールドの符号を反転するだけでよい。
+ただし、この方法はファイルディスクリプタ 0 を無視するのには使用できない点に注意すること。)
構造体の \fIevents\fP 要素は入力パラメータで、 ファイルディスクリプタ \fIfd\fP に関して、
アプリケーションが興味を持っているイベントのビットマスクを指定する。 このフィールドには 0 を指定することもでき、 その場合 \fIrevents\fP
データを受信した場合や、 パケットモードの擬似端末のマスタがスレーブ側の変化を見つけたとき)。
.TP
\fBPOLLOUT\fP
-書き込みが停止 (block) しない状態である。
+書き込みが可能になった。ただし、ソケットやパイプで利用可能な空間よりも大きなデータを書き込んだ場合には (\fBO_NONBLOCK\fP
+がセットされている場合以外は) やはり停止することになる。
.TP
\fBPOLLRDHUP\fP (Linux 2.6.17 以降)
ストリームソケットの他端が、コネクションを close したか、 コネクションの書き込み側を shutdown した。 この定義を有効にするには、
\fBpoll\fP() で監視中のファイルディスクリプタが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2)
を参照してほしい。
-.SS "Linux での注意"
+.SS "C ライブラリとカーネル ABI の違い"
Linux の \fBppoll\fP() システムコールは \fItimeout_ts\fP 引き数を変更する。 しかし、glibc
のラッパー関数は、システムコールに渡す timeout 引き数 としてローカル変数を使うことでこの動作を隠蔽している。 このため、glibc の
\fBppoll\fP() 関数では \fItimeout_ts\fP 引き数は変更されない。
+
+素の \fBppoll\fP() システムコールは 5 番目の引き数 \fIsize_t sigsetsize\fP をとる。 この引き数は \fIsigmask\fP
+引き数のバイト単位のサイズを指定する。 glibc の \fBppoll\fP() ラッパー関数は、この引き数に固定値
+(\fIsizeof(sigset_t)\fP と同じ) を指定する。
.SH バグ
\fBselect\fP(2) の「バグ」の節に書かれている、誤った準備完了通知 (spurious readiness notifications)
についての議論を参照のこと。
.SH 関連項目
\fBrestart_syscall\fP(2), \fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.63 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。