かとんぼです。 ruby 1.8.2 (2004-07-18) [i386-mswin32] で、$?.pid が 0 になりま す。 |C:\TMP>ruby -ve "p system(%(ruby -e 'p $$;exit(3)')); p $?" |ruby 1.8.2 (2004-07-18) [i386-mswin32] |3452 |false |#<Process::Status: pid=0,exited(3)> |C:\TMP>ruby -ve "p system(%(ruby -e 'p $$;exit(3)')); p $?" |ruby 1.9.0 (2004-07-18) [i386-mswin32] |2900 |false |#<Process::Status: pid=2900,exited(3)> rb_waitpid() で、正しくlast_status_set() できているのを、 rb_f_system() の終わりで last_status_set(status, 0) しているため でした。 Index: process.c =================================================================== RCS file: /src/ruby/process.c,v retrieving revision 1.92.2.6 diff -u -r1.92.2.6 process.c --- process.c 15 Apr 2004 15:02:12 -0000 1.92.2.6 +++ process.c 21 Jul 2004 13:09:45 -0000 @@ -1427,9 +1427,7 @@ else { status = proc_spawn_n(argc, argv, prog); } -#if defined(_WIN32) - last_status_set(status, 0); -#else +#if !defined(_WIN32) last_status_set(status == -1 ? 127 : status, 0); #endif #elif defined(__VMS) -- 北島雅博(かとんぼ)