如何在Ruby中从分叉/派生的进程中获取返回值?

如何在Ruby中从分叉/派生的进程中获取返回值?,ruby,process,output,fork,spawn,Ruby,Process,Output,Fork,Spawn,我的简单测试程序: pid = Process.spawn("sleep 10;date") 当“date”命令可用时,如何将其输出(例如stdout)放入变量中?我不想使用文件进行数据交换。有一种方法可以从Ruby运行命令。对于您的案例,最简单的方法是使用,它捕获输出: `sleep 10; date` # "Tue Jun 23 10:15:39 EDT 2015\n" 如果您想要更类似于Process.spawn,请使用stdlib: require 'open3' stdin, s

我的简单测试程序:

pid = Process.spawn("sleep 10;date")
当“date”命令可用时,如何将其输出(例如stdout)放入变量中?我不想使用文件进行数据交换。

有一种方法可以从Ruby运行命令。对于您的案例,最简单的方法是使用,它捕获输出:

`sleep 10; date`
# "Tue Jun 23 10:15:39 EDT 2015\n"
如果您想要更类似于
Process.spawn
,请使用stdlib:

require 'open3'

stdin, stdout, wait_thr = Open3.popen2("sleep 10; date")

stdin.close
Process.wait(wait_thr.pid)
stdout.read
# "Tue Jun 23 10:15:39 EDT 2015\n"
stdout.close