From: Hidetoshi NAGAI Date: 2008-05-14T18:23:45+09:00 Subject: [ruby-dev:34692] [ruby1.9] fork と thread 永井@知能.九工大です. native thread の関係とは思いますが, Ruby 1.9 で fork した thread 以外で waitpid できないのは, 仕様として避けようがないことなのでしょうか? ------------------------------------------------------- $ ruby19 -v ruby 1.9.0 (2008-05-14 revision 0) [i686-linux] $ irb19 irb(main):001:0> pid = fork { exec 'kterm' } => 31383 irb(main):002:0> Process.waitpid(pid) ... kterm を終了 ... => 31383 irb(main):003:0> pid = fork { exec 'kterm' } => 31395 irb(main):004:0> Thread.new{ Process.waitpid(pid) }.value Errno::ECHILD: No child processes from (irb):4:in `waitpid' from (irb):4:in `block (4 levels) in irb_binding' ... kterm を終了 ... irb(main):005:0> Thread.new{ Process.waitpid(fork{ exec 'kterm' }) }.value ... kterm を終了 ... => 31409 ------------------------------------------------------- もちろん Ruby 1.8 では問題なく waitpid で待つことができます. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp