在 ruby18 中,我有时会执行以下操作来获得完全控制的子进程:
stdin, @stdin= IO.pipe
@stdout, stdout= IO.pipe
@stderr, stderr= IO.pipe
@pid= fork do
@stdin.close
STDIN.close
stdin.dup
@stdout.close
STDOUT.close
stdout.dup
@stderr.close
STDERR.close
stderr.dup
exec(...)
end
这在 ruby19 中不起作用。STDIN、STDOUT、STDERR 的 close 方法不会关闭 ruby19 中的底层文件描述符。我如何在 ruby19 中做到这一点。