In article <20050728015209.0F30DC6734 / lithium.ruby-lang.org>, matz / ruby-lang.org (matz) writes: > matz Thu, 28 Jul 2005 10:52:05 +0900 > > Modified files: (Branch: ruby_1_8) > ruby/ext/socket: > socket.c > ruby: > version.h > ruby: > ChangeLog > Log: > * ext/socket/socket.c (ruby_connect): break immediately if a > socket is non-blocking. [ruby-talk:111654] こういうように、nonblocking かどうかで挙動を変えるのは、socket をデフォ ルトで nonblocking にしようとしたときに非互換の原因になるのであまりよ くないんじゃないか、と思っています。 また、Windows では F_GETFL がなくて、メソッドが呼ばれる前に nonblocking になっていたかどうかはわからないという話ですし。 connect_nonblock とか新しいメソッドを作ったほうがいいんじゃないでしょ うか。そのメソッドの中で nonblocking にすることにすれば使う方としても fcntl を使わないでいいぶん簡単ですし、デフォルトで nonblocking にして も挙動が変化しないですし、F_GETFL も必要なくなりますし。 名前が気に入らないかもしれませんが。 -- [田中 哲][たなか あきら][Tanaka Akira]