我試圖通過運行fork
/exec
在子進程中運行thin start 2>&1
,並且我將STDOUT重新分配給管道,以便可以通過輸入輸出。當從fork中執行fork/exec時,Thin不會輸出Thin
但是,當Thin成功啓動時,我沒有得到任何輸出。出現錯誤時,我會先輸入錯誤順序的錯誤文本,然後是標準Thin啓動消息。
我複製了Foreman的代碼,它正確地處理了這個問題。任何想法發生了什麼?
代碼:發送到$stdout
reader, writer = IO.pipe
pid = fork do
Process.setpgrp
trap("INT", "IGNORE")
$stdout.reopen writer
reader.close
exec("thin start 2>&1")
end
Process.detach pid
until reader.eof?
puts reader.gets
end
謝謝!在嘗試了該線程中討論的解決方案之後,我決定使用PTY來欺騙子進程進入線緩衝模式。 – 2012-01-14 20:45:44