如何从Ruby中的forked / spawned进程获取返回值?

时间:2015-06-23 14:02:46

标签: ruby process output fork spawn

我的简单测试程序:

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

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

1 个答案:

答案 0 :(得分:2)

有一个whole bunch of ways来运行Ruby的命令。最简单的情况是使用backticks,它捕获输出:

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

如果您想要与Process.spawn更相似的内容,请使用open3 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