OSDN Git Service

Update releases for LDP 3.68
[linuxjm/LDP_man-pages.git] / release / man2 / poll.2
index e21e33f..ca5db50 100644 (file)
@@ -1,8 +1,7 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl)
 .\" and Copyright (C) 2006, Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -22,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Additions from Richard Gooch <rgooch@atnf.CSIRO.AU> and aeb, 971207
 .\" 2006-03-13, mtk, Added ppoll() + various other rewordings
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH POLL 2 2012\-04\-15 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
+.\"         all rights reserved.
+.\" Translated 1997-12-11, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated & Modified 2004-05-22, Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified 2005-01-03, Yuichi SATO
+.\" Updated & Modified 2005-10-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16
+.\" Updated 2006-04-16, Akihiro MOTOKI, Catch up to LDP man-pages 2.28
+.\" Updated 2006-07-23, Akihiro MOTOKI, Catch up to LDP man-pages 2.36
+.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH POLL 2 2014\-05\-10 Linux "Linux Programmer's Manual"
 .SH 名前
 poll, ppoll \- ファイルディスクリプタにおけるイベントを待つ
 .SH 書式
@@ -43,6 +57,7 @@ poll, ppoll \- ファイルディスクリプタにおけるイベントを待
 \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
@@ -72,11 +87,9 @@ struct pollfd {
 簡単にあるファイルディスクリプタを無視することができる。
 単に \fIfd\fP フィールドの符号を反転するだけでよい。)
 
-構造体の \fIevents\fP 要素は入力パラメータで、
-ファイルディスクリプタ \fIfd\fP に関して、
-アプリケーションが興味を持っているイベントのビットマスクを指定する。
-このフィールドに 0 が指定された場合は、\fIfd\fP の全てのイベントが無視され、
-\fIrevents\fP には 0 が返される。
+構造体の \fIevents\fP 要素は入力パラメータで、 ファイルディスクリプタ \fIfd\fP に関して、
+アプリケーションが興味を持っているイベントのビットマスクを指定する。 このフィールドには 0 を指定することもでき、 その場合 \fIrevents\fP
+で返されるイベントは \fBPOLLHUP\fP, \fBPOLLERR\fP, \fBPOLLNVAL\fP だけである (下記参照)。
 
 \fIrevents\fP 要素は出力パラメータで、実際に起こったイベントがカーネルにより設定される。 \fIrevents\fP で返されるビット列には、
 \fIevents\fP で指定したもののどれか、もしくは \fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP のうちの一つが含まれる
@@ -86,8 +99,18 @@ struct pollfd {
 どのファイルディスクリプタにも要求したイベントが発生しておらず、 エラーも起こらない場合、 \fBpoll\fP()
 はイベントのうちいずれか一つが発生するまで停止 (block) する。
 
-\fItimeout\fP 引き数は \fBpoll\fP()  が停止する時間の上限を設定するもので、ミリ秒単位で指定する。 \fItimeout\fP
-に負の値を指定すると、タイムアウト時間が無限となる。
+\fItimeout\fP 引き数は、 ファイルディスクリプタが利用可能になるまで \fBpoll\fP() が停止する時間をミリ秒で指定する。 \fBpoll\fP()
+の呼び出しは以下のいずれかになるまで停止する。
+.IP * 3
+ファイルディスクリプタが利用可能になる
+.IP *
+呼び出しがシグナルハンドラーにより割り込まれた
+.IP *
+タイムアウトが満了する
+.PP
+\fItimeout\fP 時間はシステムクロックの粒度に切り上げられ、 カーネルのスケジューリング遅延により少しだけ長くなる可能性がある点に注意すること。
+\fItimeout\fP に負の値を指定した場合、タイムアウト時間が無限大を意味する。 \fItimeout\fP を 0 に指定した場合、I/O
+可能なファイルディスクリプタがない場合であっても、 \fBpoll\fP() はすぐに返る。
 
 \fIevents\fP に指定したり、 \fIrevents\fP で返されるビットは \fI<poll.h>\fP で定義されている:
 .RS
@@ -195,9 +218,11 @@ struct timespec {
 \fBENOMEM\fP
 ファイルディスクリプタ・テーブルを確保するためのメモリがない。
 .SH バージョン
-\fBpoll\fP()  システムコールは Linux 2.1.23 で導入された。 \fBpoll\fP()  ライブラリ・コールは libc 5.4.28
-から導入された (これはカーネルが \fBpoll\fP()  システムコールをサポートしていない場合に \fBselect\fP(2)
-を使用してエミュレートを行う)。
+.\" library call was introduced in libc 5.4.28
+\fBpoll\fP() システムコールは Linux 2.1.23 で導入された。
+このシステムコールが存在しない古いカーネルでは、
+glibc (や古い Linux libc) は \fBselect\fP(2) を使用して \fBpoll\fP()
+ラッパー関数のエミュレーションを行う。
 
 \fBppoll\fP()  システムコールは カーネル 2.6.16 で Linux に追加された。 \fBppoll\fP()  ライブラリコールは glibc
 2.4 に追加された。
@@ -207,6 +232,9 @@ struct timespec {
 .SH 注意
 いくつかの実装では、値 \-1 を持った非標準の定数 \fBINFTIM\fP が定義されており、 \fBpoll\fP()  の \fItimeout\fP
 の指定に使用できる。 この定数は glibc では定義されていない。
+
+\fBpoll\fP() で監視中のファイルディスクリプタが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2)
+を参照してほしい。
 .SS "Linux での注意"
 Linux の \fBppoll\fP()  システムコールは \fItimeout_ts\fP 引き数を変更する。 しかし、glibc
 のラッパー関数は、システムコールに渡す timeout 引き数 としてローカル変数を使うことでこの動作を隠蔽している。 このため、glibc の
@@ -215,8 +243,8 @@ Linux の \fBppoll\fP()  システムコールは \fItimeout_ts\fP 引き数を
 \fBselect\fP(2)  の「バグ」の節に書かれている、誤った準備完了通知 (spurious readiness notifications)
 についての議論を参照のこと。
 .SH 関連項目
-\fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
+\fBrestart_syscall\fP(2), \fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.68 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。