.\" 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.14. 2.5 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man2/select. 2, v 1.9 2002/04/14 18:07:01 horikawa Exp $ .Dd March 25, 1994 .Dt SELECT 2 .Os .Sh ¸íĪ .Nm select .Nd µ¿±âÀûÀÎ ÀÔÃâ·ÂÀÇ ´ÙÁßÈ­ .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In sys/types.h .In sys/time.h .In unistd.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 ÇÏÁö¸¸, ´©¸£Æ÷ÀΟ°¡ ¾Æ´Ñ °æ¿ì, ±×°ÍÀº ¼¿·º¼ÇÀÇ ¿Ï·á¸¦ ±â´Ù¸®´Â ÃÖ´ë ÀÎÅ͹úÀ» ÁöÁ¤ÇÕ´Ï´Ù. ½Ã½ºÅÛÀÇ È°µ¿¼ºÀÌ, ÀÌ ÀÎÅ͹úÀ» ºÎÁ¤ ½Ã°£ ¿¬ÀåÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. .Pp .Fa timeout ÇÏÁö¸¸ ´©¸£Æ÷ÀΟÀÇ °æ¿ì, .Fn select (Àº)´Â ¹«±âÇÑÀ¸·Î ºí·Ï ÇÕ´Ï´Ù. .Pp Æú¸µÀ» À§Çؼ­(¶§¹®¿¡)´Â, .Fa timeout Àμö´Â ´­ÀÌ ¾Æ´Ï°í, °ªÀÌ 0 ÀÇ timeval ±¸Á¶Ã¼¸¦ °¡¸®Å°°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. .Pp .Fa readfds , .Fa writefds ¹× .Fa exceptfds ÀÇ ¾î´À °ÍÀ¸·Î ºÙ¾îµµ, ¾î´À ±â¼úÀÚµµ Èï¹Ì°¡ ¾ø´Â °æ¿ì´Â ´©¸£Æ÷ÀΟ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. .Sh ¹Ýȯ°ª .Fn select (Àº)´Â ±â¼úÀÚ ÁýÇÕ¿¡ Æ÷ÇԵǾî ÀÖÀ» Áغñ¸¦ ÇÒ ¼ö ÀÖ´ø ±â¼úÀÚÀÇ ¼ö¸¦ µ¹·ÁÁÖ¾î, ¿¡·¯°¡ ÀϾÀ» °æ¿ì´Â -1 À» µ¹·ÁÁÝ´Ï´Ù. ½ÃÇÑÀÌ ¿À¸é(ÀÚ), .Fn select (Àº)´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. ¼¼Ä¡±â¿¡ ÀÇÇÏ´Â °Íµµ Æ÷ÇÔÇØ .Fn select ÇÏÁö¸¸ ¿¡·¯·Î µ¹¾Æ¿À´Â °æ¿ì´Â, ±â¼úÀÚ ÁýÇÕÀº º¯°æµÇÁö ¾Ê½À´Ï´Ù. .Sh ¿¡·¯ .Fn select (À¸)·ÎºÎÅÍ µ¹¾Æ¿À´Â ¿¡·¯´Â ´ÙÀ½ ÀÏÀ» ³ªÅ¸³À´Ï´Ù. .Bl -tag -width Er .It Bq Er EBADF ±â¼úÀÚ ÁýÇÕÀÇ ¾î¶² °ÍÀΰ¡°¡ ¹«È¿ÀÎ ±â¼úÀÚ¸¦ ÁöÁ¤ÇØ ÀÖ¾ú½À´Ï´Ù. .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 read 2 , .Xr recv 2 , .Xr send 2 , .Xr write 2 , .Xr clocks 7 .Sh ÁÖ .Dv FD_SETSIZE ÀÇ µðÆúÆ®ÀÇ »çÀÌÁî´Â Çö½ÃÁ¡¿¡¼­´Â¡¡ 1024 ÀÔ´Ï´Ù. ´Ù¼öÀÇ ¿ÀÇ ÆÄÀÏÀ» »ç¿ëÇÒ °¡´É¼ºÀÌ ÀÖ´Â ÇÁ·Î±×·¥À¸·Î .Fn select (À»)¸¦ ½ÇÇàÇϱâ À§Çؼ­, .Aq Pa sys/types.h (À»)¸¦ ¼öÁß¿¡ ³Ö´Â Çì´õ¸¦ Æ÷ÇÔÇϱâ Àü¿¡ ÇÁ·Î±×·¥À¸·Î .Dv FD_SETSIZE (À»)¸¦ Á¤ÀÇÇÏ´Â °ÍÀ¸·Î, ÀÌ »çÀÌÁ Áõ°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. .Pp .Fa nfds ÇÏÁö¸¸ ¿ÀÇ ÆÄÀÏÀÇ ¼öº¸´Ù Å« °æ¿ì, .Fn select ÇÏÁö¸¸ ¹Ì»ç¿ëÀÇ ÆÄÀÏ ±â¼úÀÚ¸¦ Á¶»çÇÏ´Â °ÍÀº ÇÁ·ÎÅØ¼ÇµÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. ¿ª»çÀûÀÎ ÀÌÀ¯·Î, .Fn select (Àº)´Â ÃÖÃÊÀÇ 256 °³ÀÇ ±â¼úÀÚ¸¦ ¹Ýµå½Ã Á¶»çÇÕ´Ï´Ù. .Sh ¹ö±× .St -susv2 ±×·³, ½Ã½ºÅÛÀÌ ¿ø·¡ÀÇ timeout ¸¦ Àû´çÇÏ°Ô °»½ÅÇÏ´Â °ÍÀ» Çã¶ôÇϰí ÀÖ½À´Ï´Ù. µû¶ó¼­, ŸÀÓ ¾Æ¿ôÀÇ °ªÀÌ .Fn select È£Ãâ¿¡ ÀÇÇØ º¯°æµÇÁö ¾ÊÀ¸¸é »óÁ¤ÇÏ´Â °ÍÀº Çö¸íÇÏÁö´Â ¾Ê½À´Ï´Ù. .Sh ¿ª»ç .Fn select ÇÔ¼ö´Â .Bx 4.2 ±×¸®°í µîÀåÇß½À´Ï´Ù.