1

我在 ruby​​ 中使用“fork”选项,如下所示:

pid1 = fork do
  pid1_output = `ruby scrape1.rb`
  puts "#{pid1_output}"
  puts ""
  exit
end

pid2 = fork do
  pid2_output = `ruby scrape2.rb`
  puts "#{pid2_output}"
  puts ""
  exit
end

pid3 = fork do
  pid3_output = `ruby scrape3.rb`
  puts "#{pid3_output}"
  puts ""
  exit
end

pid4 = fork do
  pid4_output = `ruby scrape4.rb`
  puts "#{pid4_output}"
  puts ""
  exit
end

Process.waitall

这里的问题是,有时其中一个进程(例如ruby scrape1.rb:)可能会失败或最终返回大量无法在变量中捕获的文本......我如何仍然同时运行 4 个进程并在一个终端中查看它们的所有输出实时窗口?我知道输出的顺序可能会被混淆,但没关系..我基本上想将每个分叉进程的 STDOUT 和 STDERR 重新路由到主程序..这样我就可以看到我的每个人都在刮什么刮板并在它们发生时跟踪它们的进度和错误。

4

1 回答 1

2
fork do
  exec("ruby scrape1.rb")
end

fork do
  exec("ruby scrape2.rb")
end

fork do
  exec("ruby scrape3.rb")
end

fork do
  exec("ruby scrape4.rb")
end

Process.waitall
于 2012-09-29T11:44:50.700 回答