gpt4 book ai didi

Ruby:捕获 system() 的输出并在终端中打印

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

我正在尝试运行系统命令 (rspec) 并将其输出实时彩色打印到终端,但是我想将它的打印输出捕获到一个字符串中以备后用。

目前它看起来像这样:

cmd = "rspec #{ARGV.join(' ')}"
system cmd
raw = `#{cmd}`

这是有效的,但由于 RSpec 需要几秒钟才能完成,因此将时间加倍并非微不足道。有什么方法可以让 system 调用打印到终端,但也可以捕获其输出?

最佳答案

事实证明,有一个 PTY.spawn 方法与 Open3#popen2e 非常相似,但也可以着色。这是我的整个街区:

require 'pty'

raw = ''
PTY.spawn(cmd) do |stdout_err, stdin, pid|
begin
while (char = stdout_err.getc)
raw << char
print char
end
rescue Errno::EIO # always raised when PTY runs out of input
ensure
Process.waitpid pid # Wait for PTY to complete before continuing
end
end

关于Ruby:捕获 system() 的输出并在终端中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496326/

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