{"id":54,"date":"2010-04-17T21:31:21","date_gmt":"2010-04-18T06:31:21","guid":{"rendered":"\/blog\/?p=54"},"modified":"2023-09-21T09:41:21","modified_gmt":"2023-09-21T00:41:21","slug":"unix-select-poll-multiplex-%ec%84%9c%eb%b2%84-%ea%b5%ac%ed%98%84%ec%9c%84%ed%95%9c-%ec%9e%90%eb%a3%8c-1","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=54","title":{"rendered":"Unix Select Poll - Multiplex \uc11c\ubc84 \uad6c\ud604\uc704\ud55c \uc790\ub8cc 1"},"content":{"rendered":"\n<P style=\"MARGIN: 0cm 0cm 0pt\" class=MsoNormal><SPAN class=pt3><B style=\"mso-bidi-font-weight: normal\"><SPAN style=\"FONT-SIZE: 14pt\" lang=EN-US><FONT size=4 face=\uad74\ub9bc>unix select \uc640 poll<\/FONT><\/SPAN><\/B><\/SPAN><\/P>\n<P style=\"MARGIN: 0cm 0cm 0pt\" class=MsoNormal><SPAN class=pt3><\/SPAN><B style=\"mso-bidi-font-weight: normal\"><SPAN style=\"FONT-SIZE: 14pt\" lang=EN-US><?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" \/><o:p><\/o:p><\/SPAN><\/B><FONT size=2 face=\uad74\ub9bc>&nbsp;<\/FONT><\/P>\n<P style=\"MARGIN: 0cm 0cm 0pt\" class=MsoNormal><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>2. \ud30c\uc77c \ud578\ub4e4\ub9c1 \uc77c\ubc18 (\ud30c\uc774\ud504\uc640 \uc18c\ucf13 \ud3ec\ud568)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.1 \ub2e4\uc911 \uc5f0\uacb0(multiple connection)\uad00\ub9ac\ub294 \uc5b4\ub5bb\uac8c \ud558\ub294\uac00?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.1.1 select()\ub294 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uac00?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.1.2 poll()\uc740 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uac00?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.1.3 select\ub098 poll\ucc98\ub7fc \ub3d9\uc2dc\uc5d0 SysV IPC\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uac00?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.2 \ubc18\ub300\ucabd \uc5f0\uacb0\uc774 \ub04a\uacbc\ub294\uc9c0 \uc54c\uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.3 \ub514\ub809\ud1a0\ub9ac\ub97c \uc77d\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95\uc740?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.4 \uc5b4\ub5a4 \ub2e4\ub978 \uc0ac\ub78c\uc774 \ud30c\uc77c\uc744 \uc5f4\uc5c8\ub294\uc9c0 \uc54c \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.5 \uc5b4\ub5bb\uac8c \ud30c\uc77c\uc5d0 \ub77d\uc744 \uac78 \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.6 \ud30c\uc77c\uc774 \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\uc5d0 \uc758\ud574 \uc5c5\ub370\uc774\ud2b8 \ub418\uc5c8\ub294\uc9c0 \uc5b4\ub5bb\uac8c \uc54c \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.7 'du' \ud504\ub85c\uadf8\ub7a8\uc740 \uc5b4\ub5bb\uac8c \uc791\ub3d9 \ud558\ub294 \uac83\uc785\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.8 \ud30c\uc77c\uc758 \ud06c\uae30\ub294 \uc5b4\ub5bb\uac8c \uc54c \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.9 \uc258\uc5d0\uc11c \ucc98\ub7fc '~'\ub97c \ud30c\uc77c \uc774\ub984\uc5d0\uc11c \uc5b4\ub5bb\uac8c \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10 named pipe\uc778 (FIFOs)\ub97c \uac00\uc9c0\uace0 \ubb34\uc5c7\uc744 \ud560 \uc218 \uc788\ub294\uac00?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.1 named pipe\uac00 \ubb61\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.2 named pipe\ub97c \uc5b4\ub5bb\uac8c \ub9cc\ub4ed\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.3 named pipe\ub97c \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud569\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.4 NFS\ub97c \ud1b5\ud574\uc11c named pipe\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.5 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \ud504\ub85c\uc138\uc2a4\uac00 \ud30c\uc774\ud504\uc5d0 \uc4f8 \uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 2.10.6 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c\uc758 named pipe \uc0ac\uc6a9<br \/><br \/><br \/>2. \ud30c\uc77c \ud578\ub4e4\ub9c1 \uc77c\ubc18 (\ud30c\uc774\ud504\uc640 \uc18c\ucf13 \ud3ec\ud568)<br \/>******************************************************<br \/><br \/>\ub2e4\uc74c\uc5d0 \uc788\ub294 \uc18c\ucf13 FAQ\ub3c4 \uac19\uc774 \ubcf4\ub77c:<br \/><br \/>`http:\/\/kipper.york.ac.uk\/~vic\/sock-faq\/'<br \/><br \/>`ftp:\/\/rtfm.mit.edu\/pub\/usenet\/news.answers\/unix-faq\/socket'<br \/><br \/>2.1 \ub2e4\uc911 \uc811\uc18d(multitple connection)\uc740 \uc5b4\ub5bb\uac8c \uad00\ub9ac\ud558\ub098?<br \/>=======================================<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\ub098\ub294 \ud558\ub098 \uc774\uc0c1\uc758 \uc7a5\uce58\ub97c \ubaa8\ub2c8\ud130\ub9c1 \ud574\uc57c \ud55c\ub2e4. \uadf8\ub4e4 \ubaa8\ub450\ub97c \uc5b4\ub5bb\uac8c \uad00\ub9ac \ud560\uc218 \uc788\ub294\uac00?<br \/><br \/>select() \ub610\ub294 poll()\uc744 \uc0ac\uc6a9\ud558\ub77c.<br \/><br \/>select()\ub294 BSD\uc5d0 \uc758\ud574\uc11c \uc18c\uac1c \ub41c \uac83\uc774\uace0 poll()\uc740 System V Stream\uc5d0 \uc758\ud574 \ub9cc\ub4e4\uc5b4 \uc9c4 \uac83\uc774\ub2e4. <br \/>\uc21c\uc218 BSD\uc2dc\uc2a4\ud15c\uc740 \uc5ec\uc804\ud788 poll\ub85c\ub294 \ubd80\uc871\ud558\uace0 \uc608\uc804 SVR3\ub294 select()\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0 \uc54a\uace0, SVR4\uc5d0 \uc11c select()\uac00 \ucd94\uac00 \ub418\uc5c8\ub2e4. \uadf8\ub9ac\uace0 Posix.1g\uc5d0\uc11c \uc774 \ub458\uc740 \ud45c\uc900\uc73c\ub85c \ucc44\ud0dd\ub418\uc5c8\ub2e4.<br \/><br \/>select()\uc640 poll()\uc740 \uc791\uc740 \ubd80\ubd84\uc744 \uc81c\uc678 \ud558\uace0\ub294 \uc6d0\ucc9c\uc801\uc73c\ub85c \uac19\uc740 \uc77c\uc744 \ud55c\ub2e4. \ub458\ub2e4 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ubb36\uc74c\uc5d0 \uc5b4\ub5a0\ud55c \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd \ud558\ub294 \uac83\uc744 \ud14c\uc2a4\ud2b8\ud558\uba70,<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc120\ud0dd\uc801\uc73c\ub85c \uc2dc\uac04\uc744 \uc635\uc158\uc73c\ub85c \uc8fc\uc5b4 \uc77c\uc815 \uc2dc\uac04\ub3d9\uc548 \uc774\ubca4\ud2b8\uac00 \uc77c\uc5b4\ub098\uae38 \uae30\ub2e4\ub9b4 \uc218\ub3c4 \uc788\ub2e4.<br \/><br \/>\uc911\uc694\ud55c \uac83\uc740 select()\ub098 poll() \ub458\ub2e4 \uc77c\ubc18 \ud30c\uc77c\uc5d0\uc11c\ub294 \uc544\ubb34\ub7f0 \uc758\ubbf8\uac00 \uc5c6\ub2e4\ub294 \uac83\uc774\ub2e4. \uc774\ub4e4\uc740 \uc18c\ucf13\uc774\ub098 \ud30c\uc774\ud504, \ud130\ubbf8\ub110 \uc7a5\uce58, \ub610\ub294 \ubb38\uc790 \uc7a5\uce58 \ub4f1\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5\ud558\ub2e4. \ubb3c\ub860 \uc2dc\uc2a4\ud15c \uc758\uc874\uc801\uc774\uc9c0\ub9cc.<br \/><br \/>2.1.1 select()\ub294 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9 \ud558\ub294\uac00?<br \/>----------------------------<br \/><br \/>select()\ud558\uae30 \uc704\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub294 'fd_set'\uc758 \uac1c\ub150\uc5d0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc8fc\ub85c \uae30\ubc18\uc744 \ub454\ub2e4. \uc774\uac83\uc740 \ud30c\uc77c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ubaa8\uc784\uc778\ub370 \ubcf4\ud1b5 bit \ubca1\ud130\ub85c\uc11c \uad6c\ud604 \ub41c\ub2e4. \uc608\uc804\uc5d0\ub294 \ubcf4\ud1b5 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uac00 32\ubcf4\ub2e4 \uc791\uc558\uc5c8\ub2e4. \uadf8\ub9ac\uace0 \uadf8 \ubaa8\uc784\uc5d0 \ub123\uae30 \uc704\ud574 int\ud615\uc744 \uc0ac\uc6a9 \ud588\uc5c8\ub2e4. \uadf8\ub7ec\ub098 \uc694\uc998\uc740 \uadf8 \ubcf4\ub2e4 \ub354 \ub9ce\uc740 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\ub97c \uc0ac\uc6a9 \ud560 \uc218 \uc788\ub2e4. \uadf8\ub798\uc11c \uc774 fd_set\uc744 \ub2e4\ub8e8\uae30 \uc704\ud574 \ud45c\uc900 \ub9e4\ud06c\ub85c\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4\uace0 \ud558\uaca0<br \/>\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fd_set set;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>FD_ZERO(&amp;set);<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* empties the set *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>FD_SET(fd,&amp;set)<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* adds FD to the set *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>FD_CLR(fd,&amp;set);<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* removes FD from the set *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>FD_ISSET(fd,&amp;set)<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* true if FD is in the set *\/<br \/><br \/>\ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 fdset\uc774 \ubaa8\ub4e0 \ubc94\uc704\uc758 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\ub97c \ub2e4\ub8f0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc218 \uc788\ub3c4\ub85d \ud655\uc2e0 \ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \uac83\uc740 \uc2dc\uc2a4\ud15c\uc758 \ucc45\uc784\uc774\ub2e4. \uadf8\ub7ec\ub098 \uba87\uba87 \uacbd\uc6b0\uc5d0 \uc5ec\ub7ec\ubd84\ub4e4\uc740 FD_SETSIZE\ub9e4\ud06c\ub85c\ub97c \ubbf8\ub9ac<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc815\uc758\ud574 \ub193\uc544\uc57c \ud55c\ub2e4. \uc774\uac83\ub3c4 \ubb3c\ub860 \uc2dc\uc2a4\ud15c \uc758\uc874\uc801\uc774\uc9c0\ub9cc \uc77c\ub2e8 \uc5ec\ub7ec\ubd84\uc758 \uc2dc\uc2a4\ud15c\uc758 select()\uc5d0 \ub300\ud55c \ub9e4\ub274\uc5bc<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud398\uc774\uc9c0\ub97c \ucc38\uc870 \ud558\ub77c. \ub610\ud55c \uba87\uba87 \uc2dc\uc2a4\ud15c\uc740 1024\uac1c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc774\uc0c1\uc758 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\ub97c \ud578\ub4e4\ub9c1 \ud558\ub294\ub370 \ubb38\uc81c\uac00 \uc788\ub294 \uacbd\uc6b0\ub3c4 \uc788\ub2e4.<br \/><br \/>select\ud558\uae30 \uc704\ud55c \uae30\ubcf8\uc801\uc778 \uc778\ud130\ud398\uc774\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4:<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int select(int nfds, fd_set *readset,<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> fd_set *writeset,<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> fd_set *exceptset, struct timeval *timeout);<br \/><br \/>`nfds'<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>\uac80\uc0ac\ud560 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \uac1c\uc218\uc774\ub2e4. \uc774\uac83\uc740 \ubc18\ub4dc\uc2dc fdset\uc758<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ucd5c\ub300\uac12\ubcf4\ub2e4 \ucee4\uc57c \ud558\uba70, \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \uc2e4\uc81c \uac12\uc740 \uc544\ub2c8\ub77c\ub294 \uc810\uc744 \uc54c\uc544\ub46c\uc57c \ud55c\ub2e4.<br \/><br \/>`readset'<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\uc77d\uae30 \uac00\ub2a5\uc778\uc9c0\ub97c \uc2dc\ud5d8\ud558\uae30 \uc704\ud55c \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ubaa8\uc784(set)<br \/><br \/>`writeset'<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\uc4f0\uae30 \uac00\ub2a5\uc778\uc9c0\ub97c \uc2dc\ud5d8\ud558\uae30 \uc704\ud55c \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ubaa8\uc784(set)<br \/><br \/>`exceptfds'<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\uc608\uc678 \uc0c1\ud0dc\uc5d0 \ub300\ud55c \uc2dc\ud5d8\uc744 \ud558\uae30 \uc704\ud55c \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \ubaa8\uc784(set)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>(error\ub294 \uc608\uc678 \uc0c1\ud0dc\uac00 \uc544\ub2c8\ub2e4)<br \/><br \/>`timeout'<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>\ubb34\ud55c\uc815 \uc2dc\uac04\uc744<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc704\ud574 NULL<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><SPAN lang=EN-US>\uac12\uc774\uba70, \ub610\ub294 \ucd5c\ub300<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub300\uae30<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc2dc\uac04\uc744 \uc9c0\uc2dc\ud55c\ub2e4.(<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub9cc\uc57d<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> tv_sec\uacfc <br \/>tv_usec\ubaa8\ub450\uac00 0\uc774\ub77c\uba74 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \uc0c1\ud0dc\ub294 poll\ub41c\ub2e4. \uadf8\ub7ec\ub098<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uadf8 \ud638\ucd9c\uc740 \uacb0\ucf54 \ube14\ub85d\ub418\uc9c0 \uc54a\ub294\ub2e4.<br \/><br \/>\ud638\ucd9c\uc740 'ready'\ub41c \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc758 \uc22b\uc790\ub97c \ub418\ub3cc\ub9b0\ub2e4. \uadf8\ub9ac\uace0 \uc138 \uac1c\uc758 fdset\uc740 \ubcc0\uacbd\ub418\ub294\ub370 ready \uc0c1\ud0dc\uc778 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\ub9cc set\uc5d0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub0a8\uac8c \ub41c\ub2e4. \ub9ac\ud134\ub41c \ud30c\uc77c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub514\uc2a4\ud06c\ub9bd\ud130 \ubb36\uc74c\uc744 \ud14c\uc2a4\ud2b8 \ud558\uae30<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc704\ud574 FD_ISSET \ub9e4\ud06c\ub85c\ub97c \uc0ac\uc6a9\ud558\ub77c.<br \/><br \/>\uc5ec\uae30 \uac04\ub2e8\ud55c \uc0d8\ud50c \ud504\ub85c\uadf8\ub7a8\uc774 \uc788\ub2e4. \uc774 \ud504\ub85c\uadf8\ub7a8\uc740<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud558\ub098\uc758 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uac00 \uc77d\uae30 \uac00\ub2a5\uc778\uc9c0 \ud14c\uc2a4\ud2b8 \ud55c\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int isready(int fd)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int rc;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fd_set fds;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct timeval tv;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>FD_ZERO(&amp;fds);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>FD_SET(fd,&amp;fds);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>tv.tv_sec = tv.tv_usec = 0;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>rc = select(fd+1, &amp;fds, NULL, NULL, &amp;tv);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (rc &lt; 0)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return -1;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return FD_ISSET(fd,&amp;fds) ? 1 : 0;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>\uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uac00 \ud14c\uc2a4\ud2b8\uc5d0 \uad00\uc2ec \uc5c6\uc744 \ub54c\ub294 fdset\uc5d0 NULL\uc744 \ub123\uc744 \uc218\ub3c4 \uc788\ub2e4\ub294 \uac83\uc744 \uc54c\uc544\ub450\ub77c.<br \/><br \/>2.1.2 poll()\uc740 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub098?<br \/>--------------------------<br \/><br \/>Poll\uc740 struct pollfd\uc758 \ub9ac\uc2a4\ud2b8\ub85c \ud3ec\uc778\ud130\ub97c \uc785\ub825 \ubc1b\ub294\ub2e4. \uc774\uac83\uc740 \ub514\uc2a4\ud06c\ub9bd\ud130 \uc774\uace0 \uc5ec\ub7ec\ubd84\uc774<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc800\uc7a5\ub41c \uac83\uc5d0 \ub300\ud558\uc5ec poll\ud558\uae30\ub97c \ubc14\ub77c\ub294 \uc774\ubca4\ud2b8\uc774\ub2e4. \uc774 \uc774\ubca4\ud2b8\ub294 \uc2a4\ud2b8\ub7ed\ucdb0\uc758 \uc774\ubca4\ud2b8 \ud544\ud2b8\uc5d0\uc11c bitwise\ub9c8\uc2a4\ud06c\ub97c \ud1b5\ud558\uc5ec \uc9c0\uc815\ub41c\ub2e4. \uadf8 \uc2a4\ud2b8\ub7ed\ucdb0\uc758 \uad6c\uc131\uc694\uc18c\ub294 \ud6c4\uc5d0 \uc5b4\ub5a4 \ubc1c\uc0dd\ub418\uc5b4 \uc5ec\ub7ec\ubd84\uc5d0\uac8c \uc804\ub2ec\ub420 \uc774\ubca4\ud2b8\ub85c \uc800\uc7a5\ub41c\ub2e4. SVR4\uc5d0\uc11c \ub9e4\ud06c\ub85c\ub294 poll.h\uc5d0 \uc758\ud574 \uc815\uc758 \ub418\uace0(\uc544\ub9c8 \uadf8 \uc774\uc804\ubc84\uc804\ub3c4 \uadf8\ub7f4 \ub4ef<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud558\ub2e4) \ud544\ub4dc\uc5d0\uc11c \uc774\ubca4\ud2b8\ub97c \uc815\uc758\ud558\ub294\ub370 \uc0ac\uc6a9\ub41c\ub2e4. \ud0c0\uc784\uc544\uc6c3\uc740 \ubc00\ub9ac\ucd08\ub85c \uc9c0\uc815\ub418\ub294\ub370 \uc9c0\uc6d0\ub418\ub294 type\ud615\uc740 \uc815\uc218\ud615\uc774\ub2e4.(\uc815\uc218\ud615\uc740 \ucc38 \ud63c\ub780\uc2a4\ub7f0 \ud0c0\uc785\uc774\uae34 \ud558\ub2e4.) \ud0c0\uc784\uc544\uc6c3\uc774 0\uc774\uba74 poll()\uc740 \uc989\uc2dc \ub9ac\ud134\ub418\uace0, \ub9cc\uc57d \ud0c0\uc784\uc544\uc6c3\uc774 -1\uc774\uba74 poll\uc740 \uc5b4\ub5a4 \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud560\ub54c\uae4c\uc9c0 \uc77c\uc2dc\uc815\uc9c0(suspend)\ub41c\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct pollfd {<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>int fd;<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* The descriptor. *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>short events;<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* The event(s) is\/are specified here. *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>short revents; \/* Events found are returned here. *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>};<br \/><br \/>select\uc640 \uc544\uc8fc \ube44\uc2b7\ud558\uac8c\ub3c4, \ub9ac\ud134\uac12\uc774 \uc591\uc758 \uc22b\uc790\uc77c \ub54c \uc774\ub294 \uc5bc\ub9c8\ub098 \ub9ce\uc740 \ub514\uc2a4\ud06c\ub9bd\ud130\uac00 \uc870\uac74 \uc774\ubca4\ud2b8 \uc694\uad6c\uc744 \ub9cc\uc871\ud558\ub294\uc9c0\ub97c \ub098\ud0c0\ub0b8\ub2e4. \uc694\uad6c\ub41c \uc774\ubca4\ud2b8\uac00 \uc9c0\uc815\ub41c \uc2dc\uac04\uc5d0 \uc5c6\uc744 \uacbd\uc6b0\uc5d4<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 0\uc774 \ub9ac\ud134\ub41c\ub2e4. \ub9cc\uc57d \uc74c\uc218\uac00 \ub9ac\ud134\ub418\uba74 \uc774\uac83\uc744 \uc5d0\ub7ec\ub97c \ub73b\ud558\uae30 \ub54c\ubb38\uc5d0 \ubc18\ub4dc\uc2dc \uc989\uc2dc \uc5d0\ub7ec\ub97c \uccb4\ud06c \ud574\uc57c \ud55c\ub2e4.<br \/><br \/>\ub9cc\uc57d \uc774\ubca4\ud2b8\uac00 \ubc1c\uacac\ub418\uc9c0 \uc54a\uc73c\uba74 \uc774\ubca4\ud2b8\uac00 clear\ub418\uace0 \uc5ec\ub7ec\ubd84\ub4e4\uc744<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc704\ud574 \uc774\uac83\uc740 \ub354 \uc774\uc0c1 \ud544\uc694 \uc5c6\uac8c \ub41c\ub2e4.<br \/><br \/>\ub9ac\ud134\ub41c \uc774\ubca4\ud2b8\ub4e4\uc740 \uadf8 \uc774\ubca4\ud2b8\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub294\uc9c0 \ud14c\uc2a4\ud2b8 \ub41c\ub2e4.<br \/><br \/>\uc608\uc81c\ub97c \ubcf4\uba74..:<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* \uc77c\ubc18 \ub370\uc774\ud130 \ud639\uc740 \ub192\uc740 priority\ub97c \uac16\ub294 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \ub450 \uac1c\uc758 \ub514\uc2a4\ud06c\ub9bd\ud130\uc5d0\uc11c Poll\ud55c\ub2e4.<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub9cc\uc57d \uc5b4\ub5a4 \ubc1c\uacac\ub41c \uac83\uc774 \uc801\ub2f9\ud55c \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\ub85c \ud568\uc218 handle()\uc744 \ud638\ucd9c \ud558\uba74<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud0c0\uc784\uc544\uc6c3\uc744 \uac78\uc9c0 \ub9d0\uace0, \uc5d0\ub7ec \uc77c \uacbd\uc6b0\uc5d0\ub9cc \ub610\ub294 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc911\uc758 \ud558\ub098\uac00 hang up <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc77c \uacbd\uc6b0\uc5d0\ub9cc \uadf8\ub9cc \ub450\ub3c4\ub85d \ud558\ub77c *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#define NORMAL_DATA 1<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#define HIPRI_DATA 2<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int poll_two_normal(int fd1,int fd2)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct pollfd poll_list[2];<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int retval;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>poll_list[0].fd = fd1;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>poll_list[1].fd = fd2;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>poll_list[0].events = POLLIN|POLLPRI;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>poll_list[1].events = POLLIN|POLLPRI;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>while(1)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>retval = poll(poll_list,(unsigned long)2,-1);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* \uc774 \uacbd\uc6b0\uc5d0 Retval\uc740 \ud56d\uc0c1 0 \ub610\ub294 -1 \ubcf4\ub2e4 \ud074 \uac83\uc774\ub2e4. <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc65c\ub0d0\uba74 \uc6b0\ub9ac\ub294 \uadf8\uac83\uc774 \ube14\ub85d\ud0b9 \ud558\ub294 \ub3d9\uc548 \uc218\ud589\ud558\uae30 \ub54c\ubb38\uc774\ub2e4<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>*\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if(retval &lt; 0)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fprintf(stderr,\"Error while polling: %s\\n\",strerror(errno));<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return -1;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if(((poll_list[0].revents&amp;POLLHUP) == POLLHUP) ||<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> ((poll_list[0].revents&amp;POLLERR) == POLLERR) ||<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> ((poll_list[0].revents&amp;POLLNVAL) == POLLNVAL) ||<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> ((poll_list[1].revents&amp;POLLHUP) == POLLHUP) ||<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> ((poll_list[1].revents&amp;POLLERR) == POLLERR) ||<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> ((poll_list[1].revents&amp;POLLNVAL) == POLLNVAL))<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return 0;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if((poll_list[0].revents&amp;POLLIN) == POLLIN)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>handle(poll_list[0].fd,NORMAL_DATA);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if((poll_list[0].revents&amp;POLLPRI) == POLLPRI)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>handle(poll_list[0].fd,HIPRI_DATA);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if((poll_list[1].revents&amp;POLLIN) == POLLIN)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>handle(poll_list[1].fd,NORMAL_DATA);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if((poll_list[1].revents&amp;POLLPRI) == POLLPRI)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>handle(poll_list[1].fd,HIPRI_DATA);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>2.1.3 select\ub098 poll\ucc98\ub7fc System V IPC\ub3c4 \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uac00?<br \/>------------------------------------------------------------<br \/><br \/>*\uc544\ub1e8* (\uc774\uac83\uc744 \ud5c8\uc6a9\ud558\uae30 \uc704\ud574 \uc9c0\uc800\ubd84\ud558\uace0 \uc2e0\ub8b0\uc131\uc774 \ub5a8\uc5b4\uc9c0 \uad6c\ud604\ub41c AIX\ub97c \uc81c\uc678\ud558\uace0)<br \/><br \/>\uc77c\ubc18\uc801\uc73c\ub85c System V\uc758 \uba54\uc2dc\uc9c0 \ud050\ub97c \ud568\uaed8 \uc0ac\uc6a9\ud558\uc5ec select\ub098 Poll\uc744 \uc870\ud569\ud558\uc5ec \uc0ac\uc6a9\ud558\ub294\uac74 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a8\ub2e4. System V IPC \uc624\ube0c\uc81d\ud2b8\ub294 \ud30c\uc77c \ub514\uc2a4\ud06c\ub9bd\ud130\uc5d0 \uc758\ud574<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc81c\uc5b4 \ub418\uc9c0 \uc54a\ub294\ub2e4. \uadf8\ub798\uc11c \uadf8\ub4e4\uc740 select()\ub098 poll()\uc5d0 \uc804\ub2ec \ub420 \uc218 \uc5c6\ub2e4. \uc774\ub7f0 \ucd94\ud55c \ubd80\ubd84(?)\uc774 \ub9ce\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>- \uc2dc\uc2a4\ud15c V IPC\ub294 \ubc84\ub824 \ubc84\ub824\ub77c! \ud83d\ude42<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>- fork()\ub97c \uc218\ud589\ud55c \ud6c4, \uc790\uc2dd \ud504\ub85c\uc138\uc2a4\ub85c \ud558\uc5ec\uae08 \uc2dc\uc2a4\ud15cV IPC\ub97c \ud578\ub4e4 \ud558\ub3c4\ub85d \ud558\uba74, \ubd80\ubaa8 \ud504\ub85c\uc138\uc2a4\uc640 \uc790\uc2dd \ud504\ub85c\uc138\uc2a4\uac04\uc5d0 \ud30c\uc774\ud504\uc640 \uc18c\ucf13\uc744 \ud1b5\ud558\uc5ec \ud1b5\uc2e0\ud560 \uc218 \uc788\ub294\ub370, \uc774 \ud30c\uc774\ud504\uc640 \uc18c\ucf13\uc740 \ubd80\ubaa8 \ud504\ub85c\uc138\uc2a4\uac00 select()\ud560 \uc218 \uc788\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>- \uc704\uc5d0 \ucc98\ub7fc\uc740 \uac00\ub2a5\ud558\uc9c0\ub9cc \uc790\uc2dd \ud504\ub85c\uc138\uc2a4\uac00 select()\ud558\uac70\ub098 \ubd80\ubaa8 \ud504\ub85c\uc138\uc2a4\uc640 \uba54\uc2dc\uc9c0 \ud050\ub97c \ud1b5\ud558\uc5ec \ud1b5\uc2e0\ud558\ub294 \uac83\uc740 \uc548\ub41c\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>- \uac01 \uba54\uc2dc\uc9c0 \ud6c4\uc5d0 \uc5ec\ub7ec\ubd84\uc5d0\uac8c \uc2e0\ud638\ub97c \uc804\ub2ec\ud558\uae30 \uc704\ud574 \uba54\uc2dc\uc9c0\ub97c \uc804\ub2ec\ud558\ub294 \ud504\ub85c\uc138\uc2a4\ub97c \uc815\ub3c8\ud558\ub77c. <br \/>\uacbd\uace0\ud558\ub294\ub370 \uc774\ub7ec\ud55c \uad8c\ud55c\uc744 \ud578\ub4e4\ub9c1 \ud558\ub294 \uac83\uc740 \uc0ac\uc18c\ud55c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc77c\uc774 \uc544\ub2c8\uba70, \uc774\ub7ec\ud55c \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud558\uba74 \uc7a0\uc7ac\uc801\uc73c\ub85c \uba54\uc2dc\uc9c0\ub97c \uc783\uc5b4 \ubc84\ub9ac\uac70\ub098 \ub370\ub4dc\ub77d\uc5d0 \uac78\ub9ac\ub294 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc9dc\uae30 \uc27d\ub2e4.<br \/><br \/>(\ub610\ud55c \ub2e4\ub978 \ubc29\ubc95\ub4e4\ub3c4 \uc874\uc7ac\ud55c\ub2e4.)<br \/><br \/>2.2 \ubc18\ub300\ucabd \uc5f0\uacb0\uc774 \ub04a\uacbc\ub294\uc9c0 \uc54c\uc218 \uc788\uc2b5\ub2c8\uae4c?<br \/>=================================================================<br \/><br \/>\ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc774 \ud30c\uc774\ud504\ub098 \uc18c\ucf13, FIFO \ub4f1\uc744 \ud1b5\ud574 \uc77d\uc73c\ub824\uace0 \ud55c\ub2e4\uba74, \ubc18\ub300\ucabd \uc5f0\uacb0\uc774 close\ub420 \ub54c \uc5ec\ub7ec\ubd84\uc740 EOF\uba54\uc2dc\uc9c0\ub97c \uc5bb\uc744 \uc218 \uc788\ub2e4.(read()\ud568\uc218\ub294 0\uc744 \ub9ac\ud134\ud55c\ub2e4.) \ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc774<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud30c\uc774\ud504\ub098 \uc18c\ucf13\ub4f1\uc73c\ub85c write\ud558\ub824\uace0 \ud558\uba74, \uc77d\ub294 \ub3c4\uc911\uc774 \uc0c1\ub300\ud3b8\uc774 close\ud560<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub54c SIGPIPE \uc2e0\ud638\uac00 \ud504\ub85c\uc138\uc2a4\uc5d0\uac8c \uc804\ub2ec\ub418\uace0 \uc2e0\ud638\uac00 \uce90\uce58\ub418\uc9c0 \uc54a\uc740 \uadf8\uac83\uc744 \uc8fd\uc774\uac8c \ub41c\ub2e4.(\ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc774 \uadf8 \uc2e0\ud638\ub97c \ube14\ub85d\ud558\uac8c \ub418\uba74 write() \ud638\ucd9c\uc740 EPIPE \uc640 \ud568\uaed8 \uc5d0\ub7ec\ub97c \ub9ac\ud134\ud55c\ub2e4.)<br \/><br \/>2.3 \ub514\ub809\ud1a0\ub9ac\ub97c \uc77d\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95\uc740?<br \/>=================================<br \/><br \/>\uc5ed\uc0ac\uc801\uc73c\ub85c \uc774\ub97c \uc704\ud55c \uc5ec\ub7ec \uac00\uc9c0 \uc778\ud130\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud574 \uc654\ub2e4. \uc694\uc998 Posix.1\ud45c\uc900\uc73c\ub85c \uc790\ub9ac\uc7a1\uc740 \uc720\uc77c\ud55c \ud558\ub098\ub294 \uc758 \ud568\uc218\ub97c \uc4f0\ub294 \uac83\uc774\ub2e4.<br \/><br \/>opendir() \ud568\uc218\ub294 \ud2b9\uc815 \ub514\ub809\ud1a0\ub9ac\ub97c \uc5f4\uba70, readdir()\ud568\uc218\ub294<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uadf8\uac83\uc73c\ub85c \ubd80\ud130 \ub514\ub809\ud1a0\ub9ac \ud45c\uc900\ud654\ub41c \ud3ec\ub9f7\uc73c\ub85c \uc5d4\ud2b8\ub9ac\ub97c \uc77d\uc5b4\ub4e4\uc774\uace0; closedir()\uc740 \ub2eb\ub294\ub2e4. \ub610\ud55c rewinddir(), telldir()\uadf8\ub9ac\uace0 seekdir()\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<br \/><br \/>\ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc774 \uc640\uc77c\ud2b8\uce74\ub4dc \uc774\ub984\uc744 \uc4f0\uae30 \uc6d0\ud55c\ub2e4\uba74, \ub300\ubd80\ubd84\uc758 \uc2dc\uc2a4\ud15c\uc774 glob()\ud568\uc218\ub97c \uc9c0\uc6d0\ud558\ub2e4\ub294 \uac83\uc744 \uc54c\uc544\ub46c\ub77c. \ub610\ud55c \uc640\uc77c\ub4dc \uce74\ub4dc \uc774\ub984\uc774 \ub9e4\uce6d\ub418\ub294\uc9c0 \ud655\uc778\ud558\ub294 fnmatch()\ud568\uc218\uac00 \uc874\uc7ac\ud558\ub294\uc9c0\ub3c4 \ud655\uc778\ud558\uace0, \ub514\ub809\ud1a0\ub9ac \uc804\uccb4\ub97c \ud6d1\uc5b4 \ub0b4\ub9ac\ub294 ftw()\ud568\uc218\ub3c4 \ubd10\ub77c.<br \/><br \/>2.4 \ud55c \ud30c\uc77c\uc744 \uc5b4\ub5a4 \uc0ac\ub78c\uc774 \uc5f4\uace0 \uc788\ub294\uc9c0 \uc54c\uc218 \uc788\ub294\uac00?<br \/>=======================================================<br \/><br \/>\uc774\uac83\uc740 \ub610 \ub2e4\ub978 \"Frequently Unanswered Question\"\uc758 \ud55c \ud6c4\ubcf4\uac00 \ub420 \ub4ef \uc2f6\ub2e4. \uc65c\ub0d0\uba74 \uc77c\ubc18\uc801\uc73c\ub85c \uc5ec\ub7ec\ubd84\ub4e4\uc758 \ud504\ub85c\uadf8\ub7a8\uc740 \ub2e4\ub978 \ub204\uac00 \ud30c\uc77c\uc744 \uc5f4\uc5c8\ub294\uc9c0\ub294 \uad00\uc2ec\uc774 \uc5c6\uc744 \uac83\uc774\uae30 \ub54c\ubb38\uc774\ub2e4. \ub9cc\uc57d \uc5ec\ub7ec\ubd84\uc774 \ud30c\uc77c\uc5d0 \ub300\ud55c \ub3d9\uc2dc \uc561\uc138\uc2a4\ub97c \ub2e4\ub8e8\uae38 \uc6d0\ud55c\ub2e4\uba74 locking\uc5d0 \ub300\ud55c \uac83\uc744 \ucc3e\uc544\ubd10\ub77c.<br \/><br \/>\uc774\uac83\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub9d0\ud574\uc11c \ub9e4\uc6b0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc5b4\ub824\uc6b4 \uc77c\uc774\ub2e4. fuser\uc640 lsof\uc640<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uac19\uc740 \ud504\ub85c\uadf8\ub7a8\ub4e4\uc774 \uc774\ub7ec\ud55c \uc77c\uc744 \ud574\uc8fc\uae30\ub294 \ud558\uc9c0\ub9cc \ucee4\ub110 \ub370\uc774\ud130\ub97c \ud1b5\ud574\uc11c \uc548\uc88b\uc740 \ubc29\ubc95\uc73c\ub85c \ucc3e\uc544\ub0b4\ub294 \uac83\ub4e4\uc774\uae30 \ub54c\ubb38\uc774\ub2e4.<br \/>\uc5ec\ub7ec\ubd84\ub4e4\uc740 \uc774\ub7ec\ud55c \ud504\ub85c\uadf8\ub7a8\uc744 \uc5ec\ub7ec\ubd84\uc758 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \ud638\ucd9c\ud574\uc11c \uc4f8 \ud544\uc694\ub294 \uc5c6\ub2e4. \uc65c\ub0d0\ud558\uba74 \uadf8 \ud30c\uc77c\uc774 \uc5f4\ub824 \uc788\uac74 \uc544\ub2c8\uac74 \uac04\uc5d0 \uadf8 \uc0ac\uc2e4\uc744 \ud655\uc778\ud55c \uadf8 \uc2dc\uc810\uc5d0 \uadf8 \uc0ac\uc2e4 \uc790\uccb4\uac00 \uc4f8\ubaa8 \uc5c6\uac8c \ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<br \/><br \/>2.5 \ud30c\uc77c\uc5d0 lock\uc744 \uc5b4\ub5bb\uac8c \uac78 \uc218 \uc788\ub294\uac00?<br \/>===========================<br \/><br \/>\uc138\uac00\uc9c0 \ubc29\ubc95\uc774 \uc788\ub2e4. \uadfc\ub370 \ub9cc\uc57d \ub77d\uc744 \uac78\uace0\uc790<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud558\ub294 \ub370\uc774\ud130 \ud30c\uc77c\uc774 \ub2e4\ub978\uc885\ub958\uc758 \ud504\ub85c\uadf8\ub7a8\uc774 \ub3d9\uc2dc\uc5d0 \uacf5\uc720\ud574\uc11c \uc4f0\ub294 \uc77c\uc774 \uc788\ub2e4\uba74 \uc544\uc8fc \uc138\uc2ec\ud558\uac8c \uc2e0\uacbd\uc744 \uc368\uc11c \ub77d\ud0b9 \uccb4\uc81c\ub97c \uc138\uc6b8 \ud544\uc694\uc131\uc774 \uc788\ub2e4.<br \/><br \/>\uc2e4\uc81c\ub85c \uba87\uba87 \uc720\ub2c9\uc2a4\ub4e4\uc744 sgid bit\ub97c \ud1b5\ud574\uc11c \ub77d\ud0b9\uc744 \uc704\uc784 \ud558\uace0 \uc788\ub2e4.<br \/><br \/>\uba87\uba87 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ub77d \ud30c\uc77c\uc744<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc0ac\uc6a9\ud558\uae30\ub3c4 \ud55c\ub2e4.(filename.lock\uacfc \uac19\uc740).<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub2e8\uc21c\ud788 \uadf8\ub7ec\ud55c \ud30c\uc77c\uc774 \uc874\uc7ac\ud568\uc744 \ud310\ub2e8\ud568\uc73c\ub85c\uc368 \ub77d\uc774 \uac78\ub824\uc788\ub294\uc9c0\ub9cc \ud655\uc778\ud560 \uc218<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc788\ub3c4\ub85d \ud560 \uc218 \uc788\ub2e4. \uc774 \ubc29\ubc95\uc740<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> UUCP\uc5d0\uc11c \uc8fc\ub85c \uc0ac\uc6a9\ub418\ub294\ub370 \ubaa8\ub380\uc774 \uc0ac\uc6a9\uc911\uc778\uc9c0\ub97c \uc54c\ub9ac\uae30 \uc704\ud574\uc11c \ub4f1\uc744 \uc704\ud574 \uc4f0\uc778\ub2e4. \uc608\ub97c \ub4e4\uc5b4<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> PID\ub97c \ub77d \ud30c\uc77c\ub85c \uc4f0\uae30\ub3c4 \ud55c\ub2e4. \uadf8\ub7ec\ub098 \ubb50 \ubb3c\ub860 \uc774\uac83\uc774 \ud655\uc2e4\ud55c \ubc29\ubc95\uc740 \uc544\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 PID\ub294 \ubc18\ubcf5\uc801\uc73c\ub85c \uc21c\ud658\ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<br \/><br \/>\ub77d\ud0b9 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uac83\ub4e4\uc774 \uc788\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>flock();<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>lockf();<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fcntl();<br \/><br \/>flock()\uc740 BSD\uc5d0\uc11c \ucd9c\ubc1c\ud55c \uac83\uc774\uace0 \ud604\uc7ac\ub294 \ub300\ubd80\ubd84\uc758 \uc2dc\uc2a4\ud15c\ub4e4\uc774 \uc9c0\uc6d0\ud558\uace0 \uc788\ub2e4.(\ubb3c\ub860 \uc804\ubd80\ub294 \uc544\ub2c8\uc9c0\ub9cc). \uc774\uac83\uc740 \uac04\ub2e8\ud558\uba74\uc11c\ub3c4 \ud6a8\uacfc\uc801\uc73c\ub85c \ud558\ub098\uc758 \ud638\uc2a4\ud2b8 \uc0c1\uc5d0\uc11c \ub3d9\uc791\ud55c\ub2e4, \ub2e4\ub9cc NFS\uc0c1\uc5d0\uc11c\ub294 \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\ub2e4. \ub610\ud55c \uc774\uac83\uc740 \ud30c\uc77c \uc804\uccb4\uc5d0 \ub77d\uc744 \uac74\ub2e4. \uc880<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc18d\uc784\uc218\uc801\uc778 \ubc29\ubc95\uc73c\ub85c\uc9c0\ub9cc, PERL\uc5d0\uc11c\ub3c4 \uc774\uac83\uc744 \uad6c\ud604\ud558\uace0 \uc788\ub2e4.<br \/><br \/>fcntl()\uc740 POSIX \ud638\ud658\uc758 \uc720\uc77c\ud55c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub77d\ud0b9 \uba54\ucee4\ub2c8\uc998\uc774\ub2e4. \ub530\ub77c\uc11c \uc720\uc77c\ud55c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud638\ud658\uc131\uc774 \uc788\ub294 \ub77d\ud0b9 \uccb4\uacc4\ub77c \ud558\uaca0\ub2e4. \uc774\uac83\uc740 \ub610\ud55c \ub9e4\uc6b0 \uac15\ub825\ud558\uc9c0\ub9cc \uc0ac\uc6a9\ud558\uae30\ub3c4 \uc27d\uc9c0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc54a\ub2e4. NFS\uc0c1\ud0dc\uc5d0\uc11c\ub3c4 \uc9c0\uc6d0\ud558\ub294\ub370 fcntl() \uc694\uccad\uc774 NFS\uc11c\ubc84(rpc.lockd)\uc5d0 \uc804\ub2ec\ub418\uc5b4 NFS\uc5d0\uc11c\uc758 \ub77d\ud0b9\ub3c4 \uad6c\ud604\ud558\uace0 \uc788\ub2e4. \uadf8\ub9ac\uace0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> fcntl()\uc740 \ub808\ucf54\ub4dc \ub77d\ud0b9\ub3c4 \uc9c0\uc6d0\ud558\uace0 \uc788\ub2e4.<br \/><br \/>lockf()\ub294 fcntl()\uc744 \ub2e8\uc21c\ud654\ud55c \ud504\ub85c\uadf8\ub798\ubc0d \uc778\ud130\ud398\uc774\uc2a4\uc774\ub2e4.<br \/><br \/>\uc5b4\ub5a4 \ub77d\ud0b9 \uba54\ucee4\ub2c8\uc998\uc744 \uc4f0\ub358\uc9c0 \uac04\uc5d0, \ub77d\uc774 \uc218\ud589\ub418\uace0 \uc788\uc744\ub54c\ub294 \uc5ec\ub7ec\ubd84\uc758<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ubaa8\ub4e0 \ud30c\uc77c IO\ub97c sync\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>lock(fd);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>write_to(some_function_of(fd));<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>flush_output_to(fd); \/* \ucd9c\ub825\uc774 \ubc84\ud37c\ub9c1 \ub418\uc5b4 \uc788\ub294\ub3d9\uc548\uc740 \uacb0\ucf54 unlock\ud560 \uc218 \uc5c6\ub2e4*\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>unlock(fd);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>do_something_else;<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\uac00 \uc5c5\ud14c\uc774\ud2b8 \ud55c\ub2e4.*\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>lock(fd);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>seek(fd, somewhere); \/* \ud30c\uc77c \ud3ec\uc778\ud130\uac00 \uc548\uc804\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38 *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>do_something_with(fd);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>...<br \/><br \/>fcntl()\uc758 \uc720\uc6a9\ud55c \ub77d\ud0b9 \ube44\ucc45! (\ub2e8\uc21c\ud654\ub97c \uc704\ud574 \uc5d0\ub7ec \ud578\ub4e4\ub9c1\uc740 \uc81c\uc678):<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>read_lock(int fd)<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* \ud30c\uc77c \uc804\uccb4\uc5d0 \ub300\ud574 \uacf5\uc720 \ub77d\uc744 \uac74\ub2e4 *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fcntl(fd, F_SETLKW, file_lock(F_RDLCK, SEEK_SET));<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><SPAN lang=EN-US>write_lock(int fd)<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \/* \ud30c\uc77c \uc804\uccb4\uc5d0 \ub300\ud574 \ubc30\uc81c\ub77d\uc744 \uac74\ub2e4*\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fcntl(fd, F_SETLKW, file_lock(F_WRLCK, SEEK_SET));<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>append_lock(int fd) \/* \uc874\uc7ac\ud558\ub294 \ub808\ucf54\ub4dc\ub4e4\uc5d0 \ub300\ud55c \uc5d1\uc138\uc2a4\ub97c \ub9c9\uae30 <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc704\ud574 \ud30c\uc77c\uc758 \ub05d\uc5d0 \ub77d\uc744 \uac74\ub2e4 <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>fcntl(fd, F_SETLKW, file_lock(F_WRLCK, SEEK_END));<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>\uc704\uc758 \uac83\uc5d0 \uc758\ud574 \uc0ac\uc6a9\ub418\ub294 file_lock \ud568\uc218<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct flock* file_lock(short type, short whence)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>static struct flock ret ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>ret.l_type = type ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>ret.l_start = 0 ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>ret.l_whence = whence ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>ret.l_len = 0 ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>ret.l_pid = getpid() ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return &amp;ret ;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>2.6 \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\uc5d0 \uc758\ud574 \ud30c\uc77c\uc774 \uc5c5\ub370\uc774\ud2b8 \ub418\uc5c8\ub294\uc9c0 \uc54c \uc218 \uc788\ub098?<br \/>=========================================================<br \/><br \/>\uc774\uac83\ub3c4 \uc5ed\uc2dc \"Frequently Unanswered Question\"\uc758 \ud6c4\ubcf4\uac00 \ub420 \ub9cc\ud55c\ub370 \uadf8 \uc774\uc720\ub294 \uc0ac\ub78c\ub4e4\uc774 \uc77c\ubc18\uc801\uc73c\ub85c \ud30c\uc77c\uc774 \ubcc0\uacbd\ub41c \uac83\uc5d0 \ub300\ud55c \ub178\ud2f0\ub97c \ucc3e\uc73c\ub824\uace0 \ud558\ub294\ub370 \uc774\uac83\uc5d0 \ub300\ud55c \ud638\ud658\uc131<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc788\ub294 \uc194\ub8e8\uc158\uc774 \uc5c6\uae30 \ub54c\ubb38\uc774\ub2e4.(IRIX\uc758 \uacbd\uc6b0\uc5d0\ub294 \ud45c\uc900\uc774 \uc544\ub2cc \ud30c\uc77c \uc561\uc138\uc2a4\uc5d0 \ub300\ud55c \ubaa8\ub2c8\ud130\ub9c1 \ud234\uc774<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc788\uae30\ub294 \ud558\ub2e4, \uadf8\ub7ec\ub098 \ub098\ub294 \ub2e4\ub978 \uacf3\uc5d0 \uc774\ub7f0 \uac83\uc774 \uc788\ub2e4\ub294 \ub9d0\uc744 \ub4e4\uc5b4\ubcf8 \uc801\uc774 \uc5c6\ub2e4.)<br \/><br \/>\uc77c\ubc18\uc801\uc73c\ub85c \uc5ec\ub7ec\ubd84\ub4e4\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac00\uc7a5 \uc720\uc6a9\ud55c \uac83\uc740 fstat()\uc778\ub370 \uc774\uac83\uc740 \uc624\ubc84\ud5e4\ub4dc \ub54c\ubb38\uc5d0 \ubb34\ucc99 \ub290\ub9ac\ub2e4. \ubcf4\ud1b5\uc740 stat()\ubcf4\ub2e4\ub3c4 \ub354 \ub290\ub9ac\ub2e4. \uc554\ud2bc \uc774 \ud568\uc218\uc5d0\uc11c ctime\uacfc mtime\uc744 \uc774\uc6a9\ud574 \ud30c\uc77c\uc774 \ucd5c\uadfc\uc5d0 \uc5b8\uc81c \uc561\uc138\uc2a4 \ub418\uc5c8\ub294\uc9c0\ub294 \uc54c \uc218 \uc788\uc73c\uba70, \uc0ad\uc81c, link\ub41c\uac70, \uc774\ub984\uc774 \ubc14\ub010\uac83 \ub4f1\uc744 \uc54c \uc218 \uc788\ub2e4.<br \/><br \/>\uc554\ud2bc \uad73\uc774 \uc774\ub7ec\ud55c \uae30\ub2a5\uc774 \ud544\uc694\ud55c\uc9c0 \ub2e4\uc2dc\ud55c\ubc88 \uc0dd\uac01\ud574 \ubcf4\uae38 \ubc14\ub780\ub2e4.<br \/><br \/>2.7 du \ud504\ub85c\uadf8\ub7a8\uc774 \uc5b4\ub5bb\uac8c \uc791\ub3d9 \ub418\ub294\uac00?<br \/>===================================<br \/><br \/>du\ub294 \ub2e8\uc21c\ud788 stat()\ud568\uc218\ub97c \ud1b5\ud574 \ub514\ub809\ud1a0\ub9ac\ub97c \ub3cc\uc544\ub2e4\ub2c8\uba74\uc11c \ub514\ub809\ud1a0\ub9ac\uc640 \ud30c\uc77c\uc758 \ube14\ub85d \uc218\ub97c \ub354\ud574\uc11c \uc774\ub97c \ubcf4\uc5ec\uc8fc\ub294 \uc77c\uc744 \ud55c\ub2e4.<br \/><br \/>\uc5ec\ub7ec\ubd84\uc774 \uc880\ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub97c \uc5bb\uace0 \uc2f6\ub2e4\uba74 \ub2f5\uc740:<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud574\ub77c. \ud589\uc6b4\uc744 \ube48\ub2e4.<br \/><br \/>BSD\uc2dc\uc2a4\ud15c(FreeBSD, NetBSD, OpenBSD)\uc5d0 \ub300\ud55c \uc18c\uc2a4\ub294 ftp\uc0ac\uc774\ud2b8\uc5d0 \ub9ce\uc774 \uc788\uace0 GNU\ubc84\uc804\uc5d0 \ub300\ud55c \uc18c\uc2a4\ub294 GNU mirror\uc0ac\uc774\ud2b8\uc5d0 \ub9ce\uc774 \ub3cc\uc544\ub2e4\ub2cc\ub2e4.<br \/><br \/>2.8 \ud30c\uc77c\uc758 \uc0ac\uc774\uc988\ub97c \uc5b4\ub5bb\uac8c \uc54c \uc218 \uc788\ub294\uac00?<br \/>=====================================<br \/><br \/>stat()\ub97c \uc0ac\uc6a9\ud558\uace0 \ub9cc\uc77c Open\ub41c \ud30c\uc77c\uc774 \uc788\ub2e4\uba74 fstat()\ub97c \uc0ac\uc6a9\ud558\ub77c.<br \/><br \/>\uc774 \ud638\ucd9c\uc740 \ub370\uc774\ud130 \uad6c\uc870\uccb4\ub97c \ud3ec\ud568\ud558\uace0 \uc788\ub294\ub370 \uc774 \uad6c\uc870\uccb4\uc5d0\ub294 \ud30c\uc77c\uc5d0 \uad00\ub828\ub41c \uc815\ubcf4\ub97c \ubaa8\ub450 \ud3ec\ud568\ud558\uace0 \uc788\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ud30c\uc77c\uc758 \uc18c\uc720\uc8fc, \uadf8\ub8f9, \ud37c\ubbf8\uc158, \ud06c\uae30, \ucd5c\uadfc \uc811\uadfc\uc2dc\uac04, \ucd5c\uadfc \uc218\uc815\uc2dc\uac04 \ub4f1.<br \/><br \/>\ub2e4\uc74c \ub8e8\ud2f4\uc740 stat()\uc744 \uc0ac\uc6a9\ud574\uc11c \ud30c\uc77c \ud06c\uae30\ub97c \uad6c\ud558\ub294 \uac83\uc744 \ubcf4\uc5ec\uc900\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>#include <br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>int get_file_size(char *path,off_t *size)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct stat file_stats;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if(stat(path,&amp;file_stats))<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return -1;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>*size = file_stats.st_size;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return 0;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>2.9 \uc258\uc5d0\uc11c\ucc98\ub7fc '~'\ub97c \ud30c\uc77c \uc774\ub984\uc5d0\uc11c\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uac00?<br \/>==========================================================<br \/><br \/>\ud30c\uc77c \uc774\ub984\uc758 \uc2dc\uc791\ubd80\ubd84\uc5d0 \uc624\ub294 '~'\uc5d0 \ub300\ud55c \ud45c\uc900\uc801\uc778 \ud574\uc11d\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<br \/>\ub9cc\uc57d \ud63c\uc790 \uc0ac\uc6a9\ub418\uac70\ub098 \ub610\ub294 '\/' \ub2e4\uc74c\uc5d0 \uc624\uac8c \ub418\uba74 \ud604\uc7ac \uc0ac\uc6a9\uc790\uc758 \ud648\ub514\ub809\ud1a0\ub9ac\ub85c \ub300\uccb4 \ub41c\ub2e4. \ub9cc\uc57d \uc0ac\uc6a9\uc790 \uc774\ub984 \ub2e4\uc74c\uc5d0 \uc624\uba74 \uadf8\uac83\uc740 \uc0ac\uc6a9\uc790\uc758 \ud648\ub514\ub809\ud1a0\ub9ac\ub85c \ub300\uccb4\ub41c\ub2e4. \ub9cc\uc57d<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc801\ub2f9\ud55c \ud655\uc7a5(expansion)\uc774 \ubc1c\uacac\ub418\uc9c0 \uc54a\uc73c\uba74 \uc258\uc740 \uadf8 \ud30c\uc77c\uc774\ub984\uc744 \ubcc0\uacbd\uc2dc\ud0a4\uc9c0 \uc54a\uc740\ucc44\ub85c \ub0a8\uaca8\ub454\ub2e4.<br \/><br \/>\uadf8\ub7ec\ub098 \uc2e4\uc81c\ub85c '~'\ub85c \uc2dc\uc791\ud558\ub294 \ud30c\uc77c \uc774\ub984\uc5d0<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub300\ud574 \uc8fc\uc758\ud558\ub77c. \ub9c8\uad6c\uc7a1\uc774\uc801\uc778 tilde-expansion\uc740 \uadf8\ub7ec\ud55c \ud30c\uc77c \uc774\ub984\uc744 \ud504\ub85c\uadf8\ub7a8\uc5d0\uac8c \uc9c0\uc815\ud558\ub294\uac78 \uc5b4\ub835\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ucffc\ud14c\uc774\uc158 \ub9c8\ud06c(\")\ub97c \uc0ac\uc6a9\ud558\uba74 \uc258\uc774 \uadf8\ub7ec\ud55c \ud655\uc7a5 \uac1c\ub150\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ub9c9\uc544 \uc900\uba70, \ud504\ub85c\uadf8\ub7a8\uc740<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> tilde(~)\uc790\uccb4\ub97c \ud30c\uc77c \uc774\ub984\uc73c\ub85c \ubcf4\uac8c \ub41c\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ud504\ub85c\uadf8\ub7a8\uc5d0\uac8c \ucee4\ub9e8\ub4dc\ub77c\uc778\uc758 \ud30c\ub77c\ubbf8\ud130\ub85c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc804\ub2ec\ub418\ub294 \ud30c\uc77c \uc774\ub984\uc774\ub098 \ud658\uacbd\ubcc0\uc218\uc5d0\uc11c\ub294 tilde\ub97c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><SPAN lang=EN-US>\uc0ac\uc6a9\ud558\uc9c0 \ub9d0\ub77c.<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> (\ubb3c\ub860,<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc0ac\uc6a9\uc790<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc785\ub825\uc73c\ub85c \uc0dd\uc131\ub418\ub294<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><SPAN lang=EN-US>\ud30c\uc77c \uc774\ub984\uc774\ub098 configuration\ud30c\uc77c\ub85c\ubd80\ud130 \ud30c\uc77c\uc774\ub984\uc744 \uc77d\uc744 \ub54c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub4f1\uc740 tilde-expansion\uc744 \uc0ac\uc6a9\ud558\uae30\uc5d0 \uc88b\uc740<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud6c4\ubcf4\uac10\uc774\ub2e4.)<br \/><br \/>\uc5ec\uae30 \uc774\ub7ec\ud55c \uc77c\uc744 \ud558\ub3c4\ub85d \ub9cc\ub4e4\uc5b4\uc9c4 \ud45c\uc900 \ubb38\uc790 class\ub97c \uc0ac\uc6a9\ud558\ub294 C++\ucf54\ub4dc\uac00 \uc788\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>string expand_path(const string&amp; path)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (path.length() == 0 || path[0] != '~')<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return path;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>const char *pfx = NULL;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>string::size_type pos = path.find_first_of('\/');<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (path.length() == 1 || pos == 1)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>pfx = getenv(\"HOME\");<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (!pfx)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/\/ Punt. We're trying to expand ~\/, but HOME isn't set<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct passwd *pw = getpwuid(getuid());<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (pw)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>pfx = pw-&gt;pw_dir;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>else<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>string user(path,1,(pos==string::npos) ? string::npos : pos-1);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>struct passwd *pw = getpwnam(user.c_str());<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (pw)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>pfx = pw-&gt;pw_dir;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/\/ if we failed to find an expansion, return the path unchanged.<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (!pfx)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return path;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>string result(pfx);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (pos == string::npos)<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return result;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (result.length() == 0 || result[result.length()-1] != '\/')<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>result += '\/';<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>result += path.substr(pos+1);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>return result;<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>2.10 named pipe(FIFOs)\ub97c \uac00\uc9c0\uace0 \ubb34\uc5c7\uc744 \ud560 \uc218 \uc788\ub294\uac00?<br \/>============================================<br \/><br \/>2.10.1 named pipe\uac00 \ubb34\uc5c7\uc778\uac00?<br \/>----------------------------<br \/><br \/>\"named pipe\"\ub294 \uad00\ub828\ub41c \ud504\ub85c\uc138\uc2a4\uac04\uc5d0 \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud558\uae30\uc704\ud55c \ud2b9\ubcc4\ud55c \ud30c\uc77c\uc774\ub2e4.<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud558\ub098 \ub610\ub294 \uadf8 \uc774\uc0c1\uc758 \ud504\ub85c\uc138\uc2a4\ub4e4\uc774 \uadf8\uac83\uc5d0 \ub370\uc774\ud130\ub97c \uc4f0\uba74<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\ub294 \uadf8\uac83\uc744 \uc77d\ub294\ub2e4.<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> Named pipe\ub294 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc5d0\uc11c Visible\ud55c \ud30c\uc77c\uc774\uc5b4\uc11c ls\ud504\ub85c\uadf8\ub7a8 \ub4f1\uc73c\ub85c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ub2e4\ub978 \uc77c\ubc18 \ud30c\uc77c \ucc98\ub7fc \ubcfc<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc218\ub3c4 \uc788\ub2e4.(named pipe\ub294 \ub610\ud55c fifo's\ub77c\uace0\ub3c4 \ubd88\ub9ac\uc6b0\ub294\ub370 \uc774\uac83\uc740 \"First In, First Out\"\uc744 \ub73b\ud55c\ub2e4.)<br \/><br \/>Named pipe\ub294 \uc77c\ubc18 \ud30c\uc774\ud504\uac00 \ubd80\ubaa8\/\uc790\uc2dd\uac04\uc5d0\ub9cc \uc5f0\uacb0\ud560 \uc218<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc788\ub294\uac83\uc5d0 \ube44\ud574 \uad00\ub828\uc5c6\ub294 \ud504\ub85c\uc138\uc2a4\uac04\uc5d0\ub3c4 \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud558\uace4\ud55c\ub2e4.<br \/><br \/>\ube44\ub85d \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ubb34\uba85\uc528 pipe\ub294 \uc591\ubc29\ud5a5\uc131\uc774\uc9c0\ub9cc, Named pipe\ub294 \uc808\ub300\uc801\uc73c\ub85c \ud55c\ucabd \ubc29\ud5a5\uc131\uc774\ub2e4.<br \/><br \/>2.10.2 named pipe\ub97c \uc5b4\ub5bb\uac8c \uc0dd\uc131\ud560 \uc218 \uc788\ub294\uac00?<br \/>------------------------------------<br \/><br \/>\uc778\ud130\ub809\ud2f0\ube0c\ud558\uac8c named pipe\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574\uc11c\ub294 'mknod'\ub610\ub294 'mkfifo'\ub97c \uc2e4\ud589\ud574\uc57c \ud55c\ub2e4.<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc5b4\ub5a4 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 mknod\uac00 \/etc\ub514\ub809\ud1a0\ub9ac\uc5d0 \uc788\ub2e4. \ub2e4\uc2dc \ub9d0\ud558\uba74 \uc5ec\ub7ec\ubd84\uc758 \ud328\uc2a4\uc5d0 \uc18d\ud574 \uc788\ub2e4\ub294 \ub9d0\uc774\ub2e4. \uc5ec\ub7ec\ubd84\uc758 \ub9e4\ub274\uc5bc \ud398\uc774\uc9c0\ub97c \ubcf4\uba74 \uc790\uc138\ud55c\uac78 \uc54c\uc218 \uc788\ub2e4.<br \/><br \/>C\ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c named pipe\ub97c \ub9cc\ub4e4\uae30\uc704\ud574 mkfifo()\ud568\uc218\uac00 \uc4f0\uc778\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* \uba85\uc2dc\uc801\uc73c\ub85c umask\ub97c \uc124\uc815\ud558\uba74 \uc5ec\ub7ec\ubd84\uc740 \uadf8\uac83\uc774 \uc5b4\ub514\uc5d0 \uc874\uc7ac\ud558\ub294\uc9c0 \uc54c\uc218 \uc5c6\ub2e4.*\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>umask(0);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (mkfifo(\"test_fifo\", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>perror(\"mkfifo\");<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>exit(1);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>mkfifo()\uac00 \uc5c6\uc73c\uba74 mknod()\ub97c \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\/* set the umask explicitly, you don't know where it's been *\/<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>umask(0);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>if (mknod(\"test_fifo\",<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>S_IFIFO | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> 0))<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>{<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>perror(\"mknod\");<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; &nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>exit(1);<br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>}<br \/><br \/>2.10.3 \uc5b4\ub5bb\uac8c named pipe\ub97c \uc0ac\uc6a9\ud558\ub294\uac00?<br \/>---------------------------------<br \/><br \/>pipe\ub97c \uc0ac\uc6a9\ud558\uae30\uc704\ud574\uc11c \uc77c\ubc18 \ud30c\uc77c\ucc98\ub7fc open\ud558\uace0 \uc77c\ubc18 pipe\ucc98\ub7fc read()\uc640 write()\ub97c \uc218\ud589\ud55c\ub2e4.<br \/>\uadf8\ub7ec\ub098 open()\uc740 \ube14\ub85d\ub420 \uac83\uc774\ub2e4. \ub2e4\uc74c\uc758 \ub8f0\ub4e4\uc774 \uc801\uc6a9\ub41c\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>* \ub9cc\uc57d (O_RDWR)\uc758 \ud615\ud0dc, \uc989 \uc77d\uae30,\uc4f0\uae30\uc758 \ud615\ud0dc\ub85c \ud30c\uc77c\uc744 \uc5f4\uba74 \ube14\ub85d\ub418\uc9c0 \uc54a\ub294\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><SPAN lang=EN-US>* \ub9cc\uc57d \uc77d\uae30\ub85c \uc5f4\uba74(O_RDONLY) \ub2e4\ub978<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud504\ub85c\uc138\uc2a4\uac00 write\ub85c \uc5f4\ub54c\uae4c\uc9c0 \ube14\ub85d\ub41c\ub2e4. \uadf8\ub7ec\ub098<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub9cc\uc57d O_NONBLOCK\uc774 \uc9c0\uc815\ub418\uba74 open\uc740\uc131\uacf5\uc801\uc73c\ub85c \ub420 \uac83\uc774\ub2e4.<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; <\/SPAN><SPAN lang=EN-US>* \ub9cc\uc57d O_WRONLY \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\uac00 FIFO\ub97c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc77d\uae30\ub85c \uc5f4\ub54c\uae4c\uc9c0 \ube14\ub85d\ub41c\ub2e4. \uc774\uac83\ub3c4 \uc5ed\uc2dc<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub9cc\uc57d \ud30c\uc77c\uc744 \uc5f4 \ub54c O_NONBLOCK\uc774 \uc9c0\uc815\ub418\uba74 \ube14\ub85d\ub418\uc9c0 \uc54a\ub294\ub2e4.<br \/><br \/>FIFO\ub97c \uc77c\uace0 \uc4f8 \ub54c \uc77c\ubc18 Pipe\ub098 \uc18c\ucf13\uc5d0\uc11c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uac19\uc774 \uc801\uc6a9\ub418\ub294 \uace0\ub824 \uc0ac\ud56d\uc740 read() \ub4f1\uc758 \ud568\uc218\ub294<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ubaa8\ub4e0 Writer\uac00 \uc0c1\ub300 reader\uac00 \uc5c6\uc5b4\uc11c close\ub418\uac70\ub098 write()\uac00<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> SIGPIPE\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uba74 EOF\ub97c \ub9ac\ud134 \uc2dc\ud0a8\ub2e4\ub294 \uac83\uc774\ub2e4. (\ub9cc\uc57d SIGPIPE\uac00 \ube14\ub85d\ub418\uac70\ub098 \ubb34\uc2dc\ub418\uba74 \uadf8 \ud638\ucd9c\uc740 EPIPE\uc758 \uc5d0\ub7ec\ub97c \ub9cc\ub4e4\uba74\uc11c \uc2e4\ud328\ud55c\ub2e4)<br \/><br \/>2.10.4 NFS\ub97c \ud1b5\ud574\uc11c named pipe\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uac00?<br \/>-----------------------------------------<br \/><br \/>\uc548\ub41c\ub2e4. NFS\ud504\ub85c\ud1a0\ucf5c\uc5d4 \uc774\ub7ec\ud55c \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294\ub2e4.(\uadf8\ub7ec\ub098 NFS\ub85c \ub9c8\uc6b4\ud2b8\ub41c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uac19\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \ud504\ub85c\uc138\uc2a4\uac04 \ud1b5\uc2e0\uc744 \ud558\uae30\uc704\ud574 named pipe\ub97c \uc0ac\uc6a9\ud560 \uc218\ub294 \uc788\ub2e4.)<br \/><br \/>2.10.5 \uc5ec\ub7ec \ud504\ub85c\uc138\uc2a4\uac00 \ud30c\uc774\ud504\uc5d0 \ub3d9\uc2dc\uc801\uc73c\ub85c write\ud560 \uc218 \uc788\ub098?<br \/>---------------------------------------------------------------<br \/><br \/>\ub9cc\uc57d pipe\uc5d0 \uc4f0\uc5ec\uc9c8 \uac01 \ub370\uc774\ud130\ub4e4\uc774 PIPE_BUF\ubcf4\ub2e4 \uc791\ub2e4\uba74 \uadf8\ub9ac\uace0 \uadf8\ub4e4\uc774 \uc778\ud130\ub9ac\ube0c\ub418\uc9c0 \uc54a\ub294\ub2e4\uba74 \uac00\ub2a5\ud558\ub2e4. \uadf8\ub7ec\ub098 write\uac00 \uc720\uc9c0\ub418\uc9c0 \uc54a\ub294(not preserved) \uc601\uc5ed\uc740 \uc874\uc7ac\ud55c\ub2e4. \ud30c\uc774\ud504\ub85c\ubd80\ud130 \uc77d\uc744 \ub54c, \ube44\ub85d \uc5ec\ub7ec \uc4f0\uae30\ub85c \ubd80\ud130\uc758 \ub370\uc774\ud130\ub77c\uace0 \ud560\uc9c0\ub77c\ub3c4<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \uc77d\uae30 \ud638\ucd9c\uc740 \uac00\ub2a5\ud55c \ub9ce\uc740 \ub370\uc774\ud130\ub97c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ub9ac\ud134\ud560 \uac83\uc774\ub2e4.<br \/><br \/>PIPE_BUF\uc758 \uac12\uc740 Posix\uc5d0 \uc758\ud574\uc11c \uc801\uc5b4\ub3c4<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> 512\ub294 \ub418\ub3c4\ub85d \ubcf4\uc7a5\ub41c\ub2e4. \uc774\uac74<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \uc5d0 \uc815\uc758\ub418\uc5b4 <br \/>\uc788\uc744 \uac83\uc774\ub2e4. \uadf8\ub7ec\ub098 pathconf()\ud568\uc218\ub098 fpathconf()\ud568\uc218\uc5d0 \uc758\ud574 \uc790\ub3d9\uc73c\ub85c \uc9c8\uc758 \ub41c\ub2e4.<br \/><br \/>2.10.6 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\uc758 named pipe\uc0ac\uc6a9<br \/>----------------------------------------<br \/><br \/><\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp; &nbsp; <\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US>\uc11c\ubc84\uc640 \uba87\uba87 \ud074\ub77c\uc774\uc5b8\ud2b8\uac04\uc758 2-way \ud1b5\uc2e0\uc744 \uc5b4\ub5bb\uac8c \uad6c\ud604\ud558\ub294\uac00?<br \/><br \/>\ud55c \ubc88\uc5d0 \ud558\ub098 \uc774\uc0c1\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc11c\ubc84\uc640<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><FONT face=\uad74\ub9bc><FONT size=2><SPAN lang=EN-US> \ud1b5\uc2e0\ud558\ub294\uac8c \uac00\ub2a5\ud558\ub2e4. PIPE_BUF \ubcf4\ub2e4 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ubcf4\ub0b4\ub294 \ub370\uc774\ud130\uac00 \uc791\uc740 \ud55c\uc740 \uac19\uc740 pipe\ub97c \ud1b5\ud574 \ud074\uc544\uc774\uc5b8\ud2b8 \ub4e4\uc774 \uc11c\ubc84\uc640 \ud1b5\uc2e0\ud560 \uc218 \uc788\ub2e4. \ubaa8\ub4e0 \ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4\uc740 \uc11c\ubc84\uc758 incoming fifo\uc758 \uc774\ub984\uc744 \uc27d\uac8c \uc54c \uc218\uac00 \uc788\ub2e4.<br \/><br \/>\uadf8\ub7ec\ub098, \ud558\ub098\uc758 \ud30c\uc774\ud504\ub97c \uac00\uc9c0\uace0 \uadf8 \ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4\uacfc \ud1b5\uc2e0\ud560 \uc218\ub294 \uc5c6\ub2e4. \ub9cc\uc57d<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><SPAN lang=EN-US> \ud558\ub098 \uc774\uc0c1\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4\uc774 \uac19\uc740 pipe\ub97c \ud1b5\ud574 \uc77d\uae30\ub97c \uc218\ud589\ud55c\ub2e4\uba74, \uc62c\ubc14\ub978 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc801\ub2f9\ud55c \uc8fc\uc800\uc9c4 \ub370\uc774\ud130\ub97c<\/SPAN><SPAN style=\"FONT-FAMILY: 'Times New Roman'; mso-ascii-font-family: \ubc14\ud0d5\" lang=EN-US>&nbsp;<\/SPAN><\/FONT><\/FONT><SPAN lang=EN-US><FONT size=2 face=\uad74\ub9bc> \uc77d\uac8c \ub41c\ub2e4\ub294 \ubcf4\uc99d\uc744 \ud560 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc774\ub2e4.<br \/><br \/>\uc194\ub8e8\uc158\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc11c\ubc84\uc5d0 \ub370\uc774\ud130\ub97c \ubcf4\ub0b4\uae30 \uc804\uc5d0 \uc790\uc2e0\ub4e4\uc758 incoming pipe\ub97c \ub9cc\ub4e4\uac70\ub098 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c\ubd80\ud130 \ub370\uc774\ud130\ub97c \ubc1b\uc740 \ud6c4\uc5d0 \uc11c\ubc84\uc758 out going pipe\ub97c \ub9cc\ub4dc\ub294 \uac83\uc774\ub2e4.<br \/><br \/>\ud074\ub77c\uc774\uc5b8\ud2b8\uc758 PID\ub97c \uc0ac\uc6a9\ud558\uc5ec pipe\uc758 \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc778 \ubc29\ubc95\uc774\ub2e4. \uc774\ub807\uac8c \ud568\uc73c\ub85c\uc368 \uc11c\ubc84\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc62c\ubc14\ub978 \ub370\uc774\ud130\ub97c \uc8fc\ub294 \uac83\uc744 \ubcf4\uc7a5 \ud560 \uc218 \uc788\ub2e4 <\/FONT><\/SPAN><\/P>\n","protected":false},"excerpt":{"rendered":"<p>unix select \uc640 poll &nbsp; 2. \ud30c\uc77c \ud578\ub4e4\ub9c1 \uc77c\ubc18 (\ud30c\uc774\ud504\uc640 \uc18c\ucf13 \ud3ec\ud568)&nbsp; 2.1 \ub2e4\uc911 \uc5f0\uacb0(multiple connection)\uad00\ub9ac\ub294 \uc5b4\ub5bb\uac8c \ud558\ub294\uac00?&nbsp; &nbsp; 2.1.1 select()\ub294 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uac00?&nbsp; &nbsp; 2.1.2 poll()\uc740 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uac00?&nbsp; &nbsp; 2.1.3 select\ub098 poll\ucc98\ub7fc \ub3d9\uc2dc\uc5d0 SysV IPC\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uac00?&nbsp; 2.2 \ubc18\ub300\ucabd \uc5f0\uacb0\uc774 \ub04a\uacbc\ub294\uc9c0 \uc54c\uc218 \uc788\uc2b5\ub2c8\uae4c?&nbsp; 2.3 \ub514\ub809\ud1a0\ub9ac\ub97c \uc77d\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95\uc740?&nbsp; 2.4 \uc5b4\ub5a4 \ub2e4\ub978 \uc0ac\ub78c\uc774 \ud30c\uc77c\uc744 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22],"tags":[],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-development_unix"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=54"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/54\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}