Bug #11340
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
以下のような、コードでプロセスの実行時間監視をしていたところ、 Windows とその他の環境で異なります。 ~~~ruby ~~~ require 'timeout' pid = Process.spawn('sleep', '10') puts Time.now begin Timeout.timeout(1) { Process.waitpid(pid) } rescue => e p e end puts Time.now ~~~ Linux 等の場合、`timeout` 等の場合、timeout で設定した時間で例外があがるのですが、 Windows のときは `Process.waitpid` Process.waitpid が完了してから `Timeout` Timeout のスレッドからの例外をうけとっているように見えます。 Mac 10.10.3 (ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]) のとき (Linux でも同様でした ~~~ 2015-07-09 13:48:43 +0900 #<Timeout::Error: execution expired> 2015-07-09 13:48:44 +0900 ~~~ Windows 8.1 (ruby 2.2.2p95 (2015-04-13 revision 50295) [i386-mingw32])のとき ~~~ 2015-07-08 21:10:23 -0700 #<Timeout::Error: execution expired> 2015-07-08 21:10:33 -0700 ~~~