【发布时间】:2014-01-01 08:37:11
【问题描述】:
我正在编写一个用于调用 Ninja c/c++ 构建系统的包装脚本,该脚本在 python 中,它应该做的一件事是记录 Ninja 和底层编译器的输出,但不抑制标准输出。
给我带来麻烦的部分是 Ninja 似乎检测到它是否正在写入终端,所以简单地捕获输出并将其发送到标准输出最终会改变它(最值得注意的是,Ninja 不会填满屏幕带有警告和无错误构建文件的列表,但在新的翻译单元进入时删除了最后一个成功构建的翻译单元的行)。有什么方法可以让 Ninja 写入终端,同时仍然捕获其输出?写入终端应该在 Ninja 子进程运行时发生,但所述输出的捕获可能要等到子进程完成。
【问题讨论】:
标签: python linux subprocess