gpt4 book ai didi

ruby - 将 spawn() 的标准输出/标准错误重定向到 Ruby 中的字符串

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:59 28 4
gpt4 key购买 nike

我想使用 spawn(针对多个并发子进程)在 Ruby 中执行一个外部进程,并将标准输出或标准错误收集到一个字符串中,其方式类似于使用 Python 的子进程 Popen.communicate() 可以完成的操作。

我尝试将 :out/:err 重定向到一个新的 StringIO 对象,但这会生成一个 ArgumentError,并且临时重新定义 $stdxxx 会混淆子进程的输出。

最佳答案

如果你不喜欢 popen,这是我的方法:

r, w = IO.pipe
pid = Process.spawn(command, :out => w, :err => [:child, :out])
w.close

...

pid, status = Process.wait2
output = r.read
r.close

无论如何,您不能直接重定向到 String 对象。您最多可以将它指向一个 IO 对象,然后从中读取,就像上面的代码一样。

关于ruby - 将 spawn() 的标准输出/标准错误重定向到 Ruby 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com