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

How to get return value from a forked / spawned process in Ruby?

我的简单测试程序:

pid = Process.spawn("sleep 10;date")

如何将 "date" 命令的输出(例如 stdout)放入可用的变量中?我不想使用文件进行数据交换。

有一个whole bunch of ways to run commands from Ruby. The simplest for your case is to use backticks,捕获输出:

`sleep 10; date`
# "Tue Jun 23 10:15:39 EDT 2015\n"

如果您想要更类似于 Process.spawn 的内容,请使用 open3 标准库:

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