我正试图做相反的事情
我正在运行一个正在更改其输出格式的应用程序,因为它检测到stdout上的管道,我希望它认为它是一个交互式终端,以便在重定向时获得相同的输出.
我当时认为将它包装在expect脚本中或使用proc_open()PHP中的它会这样做,但事实并非如此.
有什么想法吗?
(echo foo && sleep 1 && echo bar) | grep -P . | tee /dev/null
Run Code Online (Sandbox Code Playgroud)
上面的代码是我能想到的最小的问题案例。预期的行为是foo会被回显,一秒钟过去,然后bar会被回显。
实际发生的情况是,一秒钟过去了foo,并bar同时得到回声。如果您删除或命令(或两者,显然) grep,tee则会发生正确的行为。但当他们在一起时,情况就不是这样了。
我认为这是某种缓冲问题,但我不知道如何解决它。对我来说,实际发生的脚本已经运行了很长一段时间,直到最后我才看到任何日志消息。哈普!:(
我正在使用subprocess模块运行来自其他应用程序的命令我知道您可以执行以下操作
import subprocess
app = subprocess(args, stdout=subprocess.PIPE)
out, err = app.communicate()
print out
Run Code Online (Sandbox Code Playgroud)
我希望输出显示为最终发生的一个大blob.想法?