aboutsummaryrefslogtreecommitdiff
path: root/documentation/manual-pages/ja/man2/select.2
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/manual-pages/ja/man2/select.2')
-rw-r--r--documentation/manual-pages/ja/man2/select.2207
1 files changed, 207 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man2/select.2 b/documentation/manual-pages/ja/man2/select.2
new file mode 100644
index 0000000000..e0c9aaf681
--- /dev/null
+++ b/documentation/manual-pages/ja/man2/select.2
@@ -0,0 +1,207 @@
+.\" Copyright (c) 1983, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)select.2 8.2 (Berkeley) 3/25/94
+.\" %FreeBSD: src/lib/libc/sys/select.2,v 1.29 2004/07/02 23:52:13 ru Exp %
+.\"
+.\" $FreeBSD$
+.Dd November 17, 2002
+.Dt SELECT 2
+.Os
+.Sh 名称
+.Nm select
+.Nd 同期的な入出力の多重化
+.Sh ライブラリ
+.Lb libc
+.Sh 書式
+.In sys/select.h
+.Ft int
+.Fn select "int nfds" "fd_set *readfds" "fd_set *writefds" "fd_set *exceptfds" "struct timeval *timeout"
+.Fn FD_SET fd &fdset
+.Fn FD_CLR fd &fdset
+.Fn FD_ISSET fd &fdset
+.Fn FD_ZERO &fdset
+.Sh 解説
+.Fn select
+システムコールは、
+.Fa readfds ,
+.Fa writefds
+および
+.Fa exceptfds
+でアドレスを渡された入出力記述子集合を調べ、
+それらの記述子のいくつかがそれぞれ、読取り準備完了であるか、
+書込み準備完了であるか、または保留されている例外条件があるかを調べます。
+検出可能な唯一の例外条件は、ソケット上に受信した帯域外のデータです。
+最初の
+.Fa nfds
+個の記述子が各集合内でチェックされます。
+すなわち、記述子集合中の 0 〜
+.Fa nfds Ns No -1
+の記述子が調べられます。
+戻り時に
+.Fn select
+システムコールは指定の記述子集合を、要求された操作の準備ができている記述子で
+構成される部分集合で置き換えます。
+.Fn select
+は、すべての集合の中で準備ができた記述子の総数を返します。
+.Pp
+記述子の集合は、整数配列内のビットフィールドとして保存されます。
+このような記述子集合を操作するために次のマクロが用意されています:
+.Fn FD_ZERO &fdset
+は記述子集合
+.Fa fdset
+を空集合で初期化します。
+.Fn FD_SET fd &fdset
+は特定の記述子
+.Fa fd
+を
+.Fa fdset
+に含めます。
+.Fn FD_CLR fd &fdset
+は
+.Fa fd
+を
+.Fa fdset
+から削除します。
+.Fn FD_ISSET fd &fdset
+は
+.Fa fd
+が
+.Fa fdset
+のメンバである場合は非 0 の値を、そうでない場合は 0 を返します。
+これらのマクロの動作は、記述子の値が 0 未満であるか、または
+.Dv FD_SETSIZE
+以上である場合は未定義です。
+.Dv FD_SETSIZE
+は通常、少なくとも、システムがサポートする記述子の最大数に等しくなります。
+.Pp
+.Fa timeout
+が、NULL ポインタでない場合、それはセレクションの完了を
+待つ最大間隔を指定します。
+システムの活動性が、この間隔を不定時間延長することがあります。
+.Pp
+.Fa timeout
+が NULL ポインタの場合、
+.Fn select
+は無期限にブロックします。
+.Pp
+ポーリングのためには、
+.Fa timeout
+引数は NULL でなく、値が 0 の timeval 構造体を指しているべきです。
+.Pp
+.Fa readfds ,
+.Fa writefds
+および
+.Fa exceptfds
+のどれについても、いずれの記述子も興味がない場合は
+NULL ポインタを指定できます。
+.Sh 戻り値
+.Fn select
+システムコールは記述子集合に含まれている準備のできた記述子の数を返し、
+エラーが起きた場合は -1 を返します。
+タイムリミットが来ると、
+.Fn select
+は 0 を返します。
+システムコールの割り込まれることによるものも含めて
+.Fn select
+がエラーで戻る場合は、記述子集合は変更されません。
+.Sh エラー
+.Fn select
+から戻るエラーは次のことを示します:
+.Bl -tag -width Er
+.It Bq Er EBADF
+記述子集合のどれかが無効な記述子を指定していました。
+.It Bq Er EFAULT
+.Fa readfds , writefds , exceptfds
+または
+.Fa timeout
+の引数の 1 つが無効なアドレスを指しています。
+.It Bq Er EINTR
+タイムリミットが切れる前あるいは選択したイベントのいずれかが起きる前に、
+シグナルが配送されました。
+.It Bq Er EINVAL
+指定のタイムリミットは無効です。
+どれかが負であるか、または大きすぎます。
+.It Bq Er EINVAL
+.Fa nfds
+引数が無効でした。
+.El
+.Sh 関連項目
+.Xr accept 2 ,
+.Xr connect 2 ,
+.Xr getdtablesize 2 ,
+.Xr gettimeofday 2 ,
+.Xr kqueue 2 ,
+.Xr poll 2 ,
+.Xr read 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr write 2 ,
+.Xr clocks 7
+.Sh 注
+.Dv FD_SETSIZE
+のデフォルトのサイズは現時点では 1024 です。
+多数のオープンファイルを使用する可能性があるプログラムで
+.Fn select
+を実行するために、
+.In sys/types.h
+を取り込むヘッダを含める前にプログラムで
+.Dv FD_SETSIZE
+を定義することで、このサイズを増加できます。
+.Pp
+.Fa nfds
+がオープンファイルの数より大きい場合、
+.Fn select
+が未使用のファイル記述子を調査することは保証されていません。
+歴史的な理由で、
+.Fn select
+は最初の 256 個の記述子を必ず調査します。
+.Sh バグ
+.St -susv2
+では、システムが元の timeout を適当に更新することを許しています。
+したがって、タイムアウトの値が
+.Fn select
+システムコールによって変更されないと想定するのは賢明ではありません。
+.Sh 規格
+.Fn select
+システムコールおよび
+.Fn FD_CLR ,
+.Fn FD_ISSET ,
+.Fn FD_SET ,
+.Fn FD_ZERO
+マクロは
+.St -p1003.1-2001
+に適合します。
+.Sh 歴史
+.Fn select
+システムコールは
+.Bx 4.2
+で登場しました。