OSDN Git Service

(split) LDP: (README.JM) Update the update procedure
[linuxjm/LDP_man-pages.git] / release / man2 / select.2
index 6d934fd..ce32711 100644 (file)
@@ -1,8 +1,7 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" This manpage is copyright (C) 1992 Drew Eckhardt,
 .\"                 copyright (C) 1995 Michael Shields.
 .\"
+.\" %%%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
 .\"
 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
 .\" Modified 1995-05-18 by Jim Van Zandt <jrv@vanzandt.mv.com>
@@ -40,7 +40,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SELECT 2 2012\-05\-02 Linux "Linux Programmer's Manual"
+.TH SELECT 2 2012\-08\-17 Linux "Linux Programmer's Manual"
 .SH 名前
 select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO \- 同期 I/O の多重化
 .SH 書式
@@ -137,9 +137,9 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 
     sigset_t origmask;
 
-    sigprocmask(SIG_SETMASK, &sigmask, &origmask);
+    pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
     ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
-    sigprocmask(SIG_SETMASK, &origmask, NULL);
+    pthread_sigmask(SIG_SETMASK, &origmask, NULL);
 .fi
 .PP
 \fBpselect\fP()  が必要になる理由は、シグナルやファイルディスクリプタの状態変化を 待ちたいときには、競合状態を避けるために atomic
@@ -240,6 +240,13 @@ struct timeval {
 悪いことに glibc 2.0 以前では \fBpselect\fP()  のプロトタイプが間違っている。 glibc 2.1 から 2.2.1 では
 \fB_GNU_SOURCE\fP が定義されている場合に、 \fBpselect\fP()  が提供される。 glibc 2.2.2 以降では、
 \fBpselect\fP()  を使用するには、「書式」に記載された要件を満たす必要がある。
+.SS マルチスレッド・アプリケーション
+\fBselect\fP() で監視中のファイルディスクリプタが別のスレッドでクローズされた場合、どのような結果になるかは規定されていない。いくつかの
+UNIX システムでは、 \fBselect\fP() は停止 (block) せず、すぐ返り、ファイルディスクリプタが ready だと報告される
+(\fBselect\fP() が返ってから I/O 操作が実行されるまでの間に、 別のファイルディスクリプタが再度オープンされない限り、 それ以降の I/O
+操作はおそらく失敗するだろう)。 Linux (や他のいくつかのシステム) では、 別のスレッドでファイルディスクリプタがクローズされても
+\fBselect\fP() には影響を与えない。
+まとめると、このような場合に特定の動作に依存しているアプリケーションは「バグっている」と考えなければならない。
 .SS "Linux での注意"
 このページで説明している \fBpselect\fP() のインターフェースは、glibc に
 実装されているものである。内部で呼び出される Linux のシステムコールは
@@ -252,7 +259,7 @@ Linux の \fBpselect6\fP() システムコールは \fItimeout\fP 引き数を
 \fBpselect\fP() 関数は \fItimeout\fP 引き数を変更しない。
 これが POSIX.1\-2001 が要求している動作である。
 
-\fBpselect6\fP() システムコールの最後の引き数は\fIsigset_t\ *\fP 型の
+\fBpselect6\fP() システムコールの最後の引き数は \fIsigset_t\ *\fP 型の
 ポインタではなく、以下に示す構造体である。
 .in +4
 .nf
@@ -335,12 +342,11 @@ main(void)
 }
 .fi
 .SH 関連項目
+\fBaccept\fP(2), \fBconnect\fP(2), \fBpoll\fP(2), \fBread\fP(2), \fBrecv\fP(2), \fBsend\fP(2),
+\fBsigprocmask\fP(2), \fBwrite\fP(2), \fBepoll\fP(7), \fBtime\fP(7)
+
 考察と使用例の書かれたチュートリアルとして、 \fBselect_tut\fP(2)  がある。
-.LP
-関係がありそうなものを挙げておく: \fBaccept\fP(2), \fBconnect\fP(2), \fBpoll\fP(2), \fBread\fP(2),
-\fBrecv\fP(2), \fBsend\fP(2), \fBsigprocmask\fP(2), \fBwrite\fP(2), \fBepoll\fP(7),
-\fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。