酒本です。 早速どうもです! > require 'resolv-replace' > > するとどうなります?実際にこれでうまくいったという実例を知ら > ないのでぜひ結果を教えて欲しい(興味本位(^^;) ええと、timeout では 5 秒に設定していますが、実際に timeout.rb で スレッドが斬られているわけではないようです。 たまたま1回目は5秒で raise? したので飛び上がって喜んだのですが、 次は 30秒かかったり、例外が発生するまでの時間がまちまちです。 大きな違いはコントロール+Cが効くことですね。 > <http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3Atimeout> > > も参考にどうぞ。 > > -- > 新井康司 (Koji Arai) おお!まさにこのことですね。大変参考になります。 ところで、resolv.rb ですが、ユーザがわざわざ timeout() を使わなくてもよい、 という仕様なんでしょうか?「InitialTimeout = 5」という部分が目にとまったの で。 saka$ date 2002年 1月 13日 日曜日 15:48:00 JST saka$ /usr/bin/ruby soc.rb ^[[A^[[A^[[A /usr/lib/ruby/1.6/resolv.rb:660:in `resolv': DNS resolv timeout: www.mitsuijoho.co.jp (Resolv::ResolvEr ror) from /usr/lib/ruby/1.6/resolv.rb:650:in `each' from /usr/lib/ruby/1.6/resolv.rb:650:in `resolv' from /usr/lib/ruby/1.6/resolv.rb:345:in `each_resource' from /usr/lib/ruby/1.6/resolv.rb:307:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:182:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:181:in `each' from /usr/lib/ruby/1.6/resolv.rb:181:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:167:in `getaddress' from /usr/lib/ruby/1.6/resolv.rb:146:in `getaddress' from /usr/lib/ruby/1.6/resolv-replace.rb:12:in `getaddress' from soc.rb:6 from soc.rb:5:in `timeout' from soc.rb:5 saka$ date 2002年 1月 13日 日曜日 15:49:19 JST 次の例は ------------------------ require 'socket' require 'timeout' require 'resolv-replace' timeout(5) do p Resolv.getaddress("www.mitsuijoho.co.jp") end ------------------------ の実行結果です。今度もおよそ1分です。 saka$ date 2002年 1月 13日 日曜日 16:10:01 JST saka$ /usr/bin/ruby soc.rb date /usr/lib/ruby/1.6/resolv.rb:660:in `resolv': DNS resolv timeout: www.mitsuijoho.co.jp (Resolv::ResolvEr ror) from /usr/lib/ruby/1.6/resolv.rb:650:in `each' from /usr/lib/ruby/1.6/resolv.rb:650:in `resolv' from /usr/lib/ruby/1.6/resolv.rb:345:in `each_resource' from /usr/lib/ruby/1.6/resolv.rb:307:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:182:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:181:in `each' from /usr/lib/ruby/1.6/resolv.rb:181:in `each_address' from /usr/lib/ruby/1.6/resolv.rb:167:in `getaddress' from /usr/lib/ruby/1.6/resolv.rb:146:in `getaddress' from soc.rb:7 from soc.rb:5:in `timeout' from soc.rb:5 saka$ date 2002年 1月 13日 日曜日 16:11:21 JST > -- sakamoto