越水です。

いただいたパッチを当ててもダメでした。;_;

次のコードで試しているのですが:

trap('CHLD') {
  while (pid = Process.waitpid(-1, Process::WNOHANG))
    p pid
  end
}

if not fork
  sleep 1
  exit
else
  sleep 10
end

次のように、waitpidが2回呼び出されているようです:

$ ruby foo.rb
10778
foo.rb:2:in `waitpid': No child processes (Errno::ECHILD)
	from foo.rb:2
	from foo.rb:1:in `call'
	from foo.rb:11:in `sleep'
	from foo.rb:11

ところで、process.cのソースをいじってprintfデバッグやろうとしたのです
が、makeで失敗したり、ext/をmakeしている途中で埋め込んだprintfが実行さ
れたりとサンザンな目にあいました(^^; 。

越水
greentea / fa2.so-net.ne.jp