2011$BG/(B5$B7n(B12$BF|(B15:29 U.Nakamura removed_email_address@domain.invalid:
$B$3$l$O!“KM$,:G6a$$$l$?(BEric$B$N(B io/wait
$B%F%9%H$J$s$G$9$,!”(BWindows$B$G$N@5$7$$F0:n$,ITL@$J$N$G(B usa
$B$5$s$N8+2r$,M_$7$$!#(B
$B$(!<$H!“%F%9%H$r8+$k$H!”(Bclose$B$5$l$?(Bfd$B$KBP$7$F(Bwait$B$7$?$iNc30$,(B
$B5/$-$F$[$7$$(B?
$B$=$b$=$b(Bselect(2)$B$O(Bclose$B$5$l$?(Bfd$B$rEO$5$l$F$b(BEBADF$B$K$O$J$s$J$$(B
$B$G$9$h$M(B? $B0c$$$^$7$?$C$1(B?
Linux $B$*$h$S(B POSIX$B=5r(B $B$J%7%9%F%
$O(BEBADF$B$K$J$j$^$9!#JdB-$9$k2a5n$K5DO@$K$J$C$?$N$O(B
$B#1!K(B $B$=$b$=$bJL%9%l%C%I$,F1;~$K(Bopen$B$7$?$i!“$b$&L58z(Bfd
$B$8$c$J$/$J$C$F$7$^$&$N$@$+$i3HD%%i%$%V%i%j$O(BEBADF$B$r2>Dj$9$k$Y$-$G$O$J$$(B
$B#2!K(B
Linux$BFCM-$N@)8B$H$7$F!”@h$K(Bselect$B$7$FJL%9%l%C%I$,(Bclose$B$7$?$H$-$K(Bselect$B$O5/>2$7$J$$(B
$B!J$J$<$J$i%j%U%!%l%s%9%+%&%s%HFbItE*$K0l8D>e$,$C$F$7$^$C$F$k$+$i8!CN$G$-$L!K(B
$B$G!“$3$l$OHs8x3+(BAPI
$B$r$`$j$d$j%F%9%H$7$F$k%F%9%H%1!<%9$J$N$G!”(Bpoll $B$H(B select
$B$G:90[$,=P$J$$$3$H$r3NG’$9$k$3$H$,<g4c$K$J$C$F$k$s$G$9!#(B
$B$=$N$3$H$N@‘Hs$O$5$F$$/$H$7$F!"4pK\E$K%F%9%H$O$h$[$I%“%l$8$c$J$$$+$.$j%^!<%8$7$F$d$C$F$b$h$+$m$&$H;W$&$N$G%^!<%8$7$A$c$$$^$7$?!#!J(Btest/-ext-
$B$J$s$F%”%l%2%F%9%H$NAc7"$J$s$+$i:#99:Y$+$$$3$H$r8@$C$F$b$M$’!&!&$H$+$H$+!K(B
$B$=$&$$$&;EMM$,$*K>$_$J$i(Bselect_single()$B$"$?$j$r$=$&$$$&5sF0$K(B
$BJQ$($J$$$H$$$+$s$N$G$O$J$$$+$H;W$$$^$9$1$I(B…
$B$J$*!“(Bpoll(2)$BHG$b<+A0$G(BPOLLNVAL$B$r(BEBADF$B$KJQ49$7$?>e$G(BRuby$BNc30(B
$B$K$7$F$k$h$&$G$9$,!”$I$&$;Nc30Ej$2$k$J$i(BIOError$B$NJ}$,$$$$$s$8(B
$B$c$J$$$+$H;d$O;W$$$^$9!#(B
$B$H$$$&;EMM$K$9$k$H$7$F$b!“(BIO.select$B$N%k!<%H$r9M$($k$H(B
$B%W%i%C%H%U%)!<%`$,(BEBADF$B$rJV$7$?$H$3$m$r%-%c%C%A$7$F(BIOError$B$KJQ49$9$k$3$H$K$J$k$H;W$$$^$9!#(B
$B$b$7$/$O!”(BWindows$B$@$1Nc30>e$,$i$J$$$3$H$r;EMM$K$7$F!"$3$N%F%9%H$r%9%-%C%W$5$;$k$+!#(B
$B!t(B $B$H$3$m$G!"$J$s$G(B Windows $B$N(B select $B$K(B pipe
$B$o$?$7$FF0$$$F$$$k$N$+M}2r=PMh$J$$$N$G(B
$B!t(B $B:#EY65$($F$/$@$5$$(B