From: usa@... Date: 2015-07-09T07:04:38+00:00 Subject: [ruby-dev:49178] [Ruby trunk - Bug #11340] Windows で Timeout.timeout を使って Process.waitpid を監視しても timeout が正しく動かない Issue #11340 has been updated by Usaku NAKAMURA. Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: WONTFIX, 2.1: REQUIRED, 2.2: REQUIRED ---------------------------------------- Bug #11340: Windows で Timeout.timeout を使って Process.waitpid を監視しても timeout が正しく動かない https://bugs.ruby-lang.org/issues/11340#change-53341 * Author: 三村 益隆 * Status: Closed * Priority: Normal * Assignee: * ruby -v: * Backport: 2.0.0: WONTFIX, 2.1: REQUIRED, 2.2: REQUIRED ---------------------------------------- 以下のような、コードでプロセスの実行時間監視をしていたところ、 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` で設定した時間で例外があがるのですが、 Windows のときは `Process.waitpid` が完了してから `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 # 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 # 2015-07-08 21:10:33 -0700 ~~~ -- https://bugs.ruby-lang.org/