Bug #1872: [ruby_1_8] Kernel#system doesn't work in forked process
http://redmine.ruby-lang.org/issues/show/1872

起票者: Hidetoshi Nagai
ステータス: Open, 優先度: High
カテゴリ: core, Target version: Ruby 1.8.8
ruby -v: ruby 1.8.8dev (2009-08-03 revision 24370) [i686-linux]

OS 環境に依存している気もしないではないですが,
例えば次のような例が hang-up します.

$ ruby -e 'Process.fork{p system("ls")}'

Linux 2.6.15, glibc 2.3.3 における
ruby 1.8.8dev (2009-08-03 revision 24370) です.
configure オプションは --enable-pthread だけを与えています.

rb_f_system() 中の fork までは完了しており,
子プロセスは生成されてはいるものの,
生成直後に固まってしまっているようです.
親プロセスについては,子プロセスの ID を受け取り,
素直に動作して rb_syswait() に入っているように見受けられます.

なお,上記の例で system の代りに exec とした場合には
問題なく動作します.


----------------------------------------
http://redmine.ruby-lang.org