Quero bifurcar um processo, esperar o processo filho terminar e então obter o STDOUT do processo filho. Aqui está o código que não funciona:
require 'stringio'
hold_stdout = $stdout
results = $stdout = StringIO.new
if pid = fork()
Process.wait(pid)
else
$stdout = hold_stdout
puts 'stuff in child process'
exit
end
$stdout = hold_stdout
puts 'results from child:'
puts results.string
Isso dá esta saída:
stuff in child process
results from child:
Não tenho certeza do que fazer aqui. Se você me perguntar "por que você está...?" a resposta é porque eu não sei o que estou fazendo. Qualquer ajuda é bem-vinda.
Você pode usar pipes e redirecioná-los
stdout
para o processo filho.Isso deve imprimir o que você deseja.