.\"
.TH POLL 2 2014\-09\-06 Linux "Linux Programmer's Manual"
.SH 名前
-poll, ppoll \- ファイルディスクリプタにおけるイベントを待つ
+poll, ppoll \- ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«ã\81\8aã\81\91ã\82\8bã\82¤ã\83\99ã\83³ã\83\88ã\82\92å¾\85ã\81¤
.SH 書式
.nf
\fB#include <poll.h>\fP
\fB const struct timespec *\fP\fItimeout_ts\fP\fB, const sigset_t *\fP\fIsigmask\fP\fB);\fP
.fi
.SH 説明
-\fBpoll\fP() は \fBselect\fP(2) と同様の仕事を行う、つまり、ファイルディスクリプタ集合のいずれか一つが I/O
+\fBpoll\fP() は \fBselect\fP(2) と同様の仕事を行う、つまり、ファイルディスクリプター集合のいずれか一つが I/O
を実行可能な状態になるのを待つ。
-監視するファイルディスクリプタ集合は、 \fIfds\fP 引き数で指定する。 \fIfds\fP は、以下の型の構造体の配列である。
+監視するファイルディスクリプター集合は、 \fIfds\fP 引き数で指定する。 \fIfds\fP は、以下の型の構造体の配列である。
.in +4n
.nf
.PP
\fInfds\fP には、 \fIfds\fP 配列の要素数を指定する。
-\fIfd\fP フィールドには、オープンされたファイルのファイルディスクリプタが入る。 このフィールドが負の場合、対応する \fIevents\fP
+\fIfd\fP ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯ã\80\81ã\82ªã\83¼ã\83\97ã\83³ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\85¥ã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81\8cè² ã\81®å ´å\90\88ã\80\81対å¿\9cã\81\99ã\82\8b \fIevents\fP
フィールドは無視され、 \fIrevents\fP には 0 が返される。(この機能により、一つの \fBpoll\fP()
-の呼び出しで簡単にあるファイルディスクリプタを無視することができる。 単に \fIfd\fP フィールドの符号を反転するだけでよい。
-ただし、この方法はファイルディスクリプタ 0 を無視するのには使用できない点に注意すること。)
+ã\81®å\91¼ã\81³å\87ºã\81\97ã\81§ç°¡å\8d\98ã\81«ã\81\82ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92ç\84¡è¦\96ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 å\8d\98ã\81« \fIfd\fP ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81®ç¬¦å\8f·ã\82\92å\8f\8d転ã\81\99ã\82\8bã\81 ã\81\91ã\81§ã\82\88ã\81\84ã\80\82
+ただし、この方法はファイルディスクリプター 0 を無視するのには使用できない点に注意すること。)
-æ§\8bé\80 ä½\93ã\81® \fIevents\fP è¦\81ç´ ã\81¯å\85¥å\8a\9bã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\81§ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP に関して、
+æ§\8bé\80 ä½\93ã\81® \fIevents\fP è¦\81ç´ ã\81¯å\85¥å\8a\9bã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\81§ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ \fIfd\fP に関して、
アプリケーションが興味を持っているイベントのビットマスクを指定する。 このフィールドには 0 を指定することもでき、 その場合 \fIrevents\fP
で返されるイベントは \fBPOLLHUP\fP, \fBPOLLERR\fP, \fBPOLLNVAL\fP だけである (下記参照)。
-\fIrevents\fP 要素は出力パラメータで、実際に起こったイベントがカーネルにより設定される。 \fIrevents\fP で返されるビット列には、
+\fIrevents\fP è¦\81ç´ ã\81¯å\87ºå\8a\9bã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\81§ã\80\81å®\9fé\9a\9bã\81«èµ·ã\81\93ã\81£ã\81\9fã\82¤ã\83\99ã\83³ã\83\88ã\81\8cã\82«ã\83¼ã\83\8dã\83«ã\81«ã\82\88ã\82\8aè¨å®\9aã\81\95ã\82\8cã\82\8bã\80\82 \fIrevents\fP ã\81§è¿\94ã\81\95ã\82\8cã\82\8bã\83\93ã\83\83ã\83\88å\88\97ã\81«ã\81¯ã\80\81
\fIevents\fP で指定したもののどれか、もしくは \fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP のうちの一つが含まれる
(\fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP の 3つのビットは \fIevents\fP
に指定しても意味がなく、対応した状態が真の場合に \fIrevents\fP に設定される)。
-どのファイルディスクリプタにも要求したイベントが発生しておらず、 エラーも起こらない場合、 \fBpoll\fP()
+ã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«ã\82\82è¦\81æ±\82ã\81\97ã\81\9fã\82¤ã\83\99ã\83³ã\83\88ã\81\8cç\99ºç\94\9fã\81\97ã\81¦ã\81\8aã\82\89ã\81\9aã\80\81 ã\82¨ã\83©ã\83¼ã\82\82èµ·ã\81\93ã\82\89ã\81ªã\81\84å ´å\90\88ã\80\81 \fBpoll\fP()
はイベントのうちいずれか一つが発生するまで停止 (block) する。
-\fItimeout\fP å¼\95ã\81\8dæ\95°ã\81¯ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81\8cå\88©ç\94¨å\8f¯è\83½ã\81«ã\81ªã\82\8bã\81¾ã\81§ \fBpoll\fP() ã\81\8cå\81\9cæ¢ã\81\99ã\82\8bæ\99\82é\96\93ã\82\92ã\83\9fã\83ªç§\92ã\81§æ\8c\87å®\9aã\81\99ã\82\8bã\80\82 \fBpoll\fP()
-の呼び出しは以下のいずれかになるまで停止する。
+\fItimeout\fP å¼\95ã\81\8dæ\95°ã\81¯ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\88©ç\94¨å\8f¯è\83½ã\81«ã\81ªã\82\8bã\81¾ã\81§ \fBpoll\fP() ã\81\8cå\81\9cæ¢ã\81\99ã\82\8bæ\99\82é\96\93ã\82\92ã\83\9fã\83ªç§\92ã\81§æ\8c\87å®\9aã\81\99ã\82\8bã\80\82
+\fBpoll\fP() の呼び出しは以下のいずれかになるまで停止する。
.IP * 3
-ファイルディスクリプタが利用可能になる
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\88©ç\94¨å\8f¯è\83½ã\81«ã\81ªã\82\8b
.IP *
呼び出しがシグナルハンドラーにより割り込まれた
.IP *
.PP
\fItimeout\fP 時間はシステムクロックの粒度に切り上げられ、 カーネルのスケジューリング遅延により少しだけ長くなる可能性がある点に注意すること。
\fItimeout\fP に負の値を指定した場合、タイムアウト時間が無限大を意味する。 \fItimeout\fP を 0 に指定した場合、I/O
-可能なファイルディスクリプタがない場合であっても、 \fBpoll\fP() はすぐに返る。
+å\8f¯è\83½ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cã\81ªã\81\84å ´å\90\88ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\80\81 \fBpoll\fP() ã\81¯ã\81\99ã\81\90ã\81«è¿\94ã\82\8bã\80\82
\fIevents\fP に指定したり、 \fIrevents\fP で返されるビットは \fI<poll.h>\fP で定義されている:
.RS
.TP
\fBPOLLRDHUP\fP (Linux 2.6.17 以降)
ストリームソケットの他端が、コネクションを close したか、 コネクションの書き込み側を shutdown した。 この定義を有効にするには、
-(「どの」ヘッダファイルをインクルードするよりも前に) \fB_GNU_SOURCE\fP 機能検査マクロを定義しなければならない。
+(ã\80\8cã\81©ã\81®ã\80\8dã\83\98ã\83\83ã\83\80ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81\99ã\82\8bã\82\88ã\82\8aã\82\82å\89\8dã\81«) \fB_GNU_SOURCE\fP æ©\9fè\83½æ¤\9cæ\9f»ã\83\9eã\82¯ã\83ã\82\92å®\9a義ã\81\97ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82
.TP
\fBPOLLERR\fP
エラー状態 (出力の場合のみ)。
Linux では \fBPOLLMSG\fP も定義されているが、使用されていない。
.SS ppoll()
\fBpoll\fP() と \fBppoll\fP() の関係は \fBselect\fP(2) と \fBpselect\fP(2) の関係と同じようなものである:
-\fBpselect\fP(2) と同様に、 \fBppoll\fP() を使うと、アプリケーションはファイルディスクリプタの状態変化
+\fBpselect\fP(2) ã\81¨å\90\8cæ§\98ã\81«ã\80\81 \fBppoll\fP() ã\82\92使ã\81\86ã\81¨ã\80\81ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ç\8a¶æ\85\8bå¤\89å\8c\96
もしくはシグナルの捕捉を安全に待つことができる。
.PP
\fItimeout\fP 引き数の精度の違いを除くと、以下の \fBppoll\fP() の呼び出しは、
\fBpoll\fP() との違いは \fItimeout\fP 引き数の精度だけとなる)。
\fItimeout\fP 引き数は \fBppoll\fP() が停止する時間の上限を指定するものである。
-この引き数には以下の型の構造体へのポインタを指定する。
+ã\81\93ã\81®å¼\95ã\81\8dæ\95°ã\81«ã\81¯ä»¥ä¸\8bã\81®å\9e\8bã\81®æ§\8bé\80 ä½\93ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\80\82
.in +4n
.nf
\fItimeout_ts\fP に NULL が指定された場合、 \fBppoll\fP は無限に停止することがあり得る。
.SH 返り値
-成功した場合は正の数を返す。この数は 0 以外の \fIrevents\fP 要素を持つ構造体の数である (別の言い方をすると、これらのディスクリプタ
-にはイベントかエラー報告がある)。 値 0 は、タイムアウトとなり、どのファイルディスクリプタでもイベントが 発生しなかったことを示す。エラーの場合は
+成功した場合は正の数を返す。この数は 0 以外の \fIrevents\fP 要素を持つ構造体の数である (別の言い方をすると、これらのディスクリプター
+ã\81«ã\81¯ã\82¤ã\83\99ã\83³ã\83\88ã\81\8bã\82¨ã\83©ã\83¼å ±å\91\8aã\81\8cã\81\82ã\82\8b)ã\80\82 å\80¤ 0 ã\81¯ã\80\81ã\82¿ã\82¤ã\83 ã\82¢ã\82¦ã\83\88ã\81¨ã\81ªã\82\8aã\80\81ã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\82\82ã\82¤ã\83\99ã\83³ã\83\88ã\81\8c ç\99ºç\94\9fã\81\97ã\81ªã\81\8bã\81£ã\81\9fã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82ã\82¨ã\83©ã\83¼ã\81®å ´å\90\88ã\81¯
\-1 が返され、 \fIerrno\fP が適切に設定される。
.SH エラー
.TP
\fInfds\fP の値が \fBRLIMIT_NOFILE\fP を超えた。
.TP
\fBENOMEM\fP
-ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83»ã\83\86ã\83¼ã\83\96ã\83«ã\82\92確ä¿\9dã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\83¡ã\83¢ã\83ªがない。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\86ã\83¼ã\83\96ã\83«ã\82\92確ä¿\9dã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\83¡ã\83¢ã\83ªã\83¼がない。
.SH バージョン
.\" library call was introduced in libc 5.4.28
\fBpoll\fP() システムコールは Linux 2.1.23 で導入された。
いくつかの実装では、値 \-1 を持った非標準の定数 \fBINFTIM\fP が定義されており、 \fBpoll\fP() の \fItimeout\fP
の指定に使用できる。 この定数は glibc では定義されていない。
-\fBpoll\fP() で監視中のファイルディスクリプタが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2)
+\fBpoll\fP() ã\81§ç\9b£è¦\96ä¸ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\88¥ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81«ã\82\88ã\81£ã\81¦ã\82¯ã\83ã\83¼ã\82ºã\81\95ã\82\8cã\81\9få ´å\90\88ã\81«ä½\95ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\81®è°è«\96ã\81«ã\81¤ã\81\84ã\81¦ã\81¯ã\80\81 \fBselect\fP(2)
を参照してほしい。
.SS "C ライブラリとカーネル ABI の違い"
Linux の \fBppoll\fP() システムコールは \fItimeout_ts\fP 引き数を変更する。 しかし、glibc
.SH 関連項目
\fBrestart_syscall\fP(2), \fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.77 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。