我正在尝试将子进程的输出重定向到$stdout
并同时捕获它。
如果我首先捕获输出然后将其重定向到$stdout
,则所有ANSI颜色代码都会丢失,因为用于捕获的管道不是TTY。
有没有办法让子进程认为它输出到TTY?我尝试使用Open3.popen3
和StringIO
子类为true
返回#tty?
,但我收到此错误,因为重定向目标必须是文件,而不是对象:
spawn': wrong exec redirect action (ArgumentError)
答案 0 :(得分:1)
PTY
模块可用于此目的。
不要使用IO.pipe
创建管道,而只需使用PTY.open
,这会创建一个可以像管道一样使用的伪终端。