Submitted by: Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp> Reviewed by: Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
207 lines
5.8 KiB
Groff
207 lines
5.8 KiB
Groff
.\" 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
|
|
¤ÇÅо줷¤Þ¤·¤¿¡£
|