相关疑难解决方法(0)

欺骗应用程序认为它的标准输出是一个终端,而不是管道

我正试图做相反的事情

检测stdin是终端还是管道?

我正在运行一个正在更改其输出格式的应用程序,因为它检测到stdout上的管道,我希望它认为它是一个交互式终端,以便在重定向时获得相同的输出.

我当时认为将它包装在expect脚本中或使用proc_open()PHP中的它会这样做,但事实并非如此.

有什么想法吗?

bash terminal stdin pipe

137
推荐指数
7
解决办法
5万
查看次数

grep、tee 和 sleep 配合得不好

(echo foo && sleep 1 && echo bar) | grep -P . | tee /dev/null
Run Code Online (Sandbox Code Playgroud)

上面的代码是我能想到的最小的问题案例。预期的行为是foo会被回显,一秒钟过去,然后bar会被回显。

实际发生的情况是,一秒钟过去了foo,并bar同时得到回声。如果您删除命令(或两者,显然) greptee则会发生正确的行为。但当他们在一起时,情况就不是这样了。

我认为这是某种缓冲问题,但我不知道如何解决它。对我来说,实际发生的脚本已经运行了很长一段时间,直到最后我才看到任何日志消息。哈普!:(

bash grep tee

3
推荐指数
1
解决办法
324
查看次数

subprocess.PIPE的增量输出

我正在使用subprocess模块运行来自其他应用程序的命令我知道您可以执行以下操作

import subprocess

app = subprocess(args, stdout=subprocess.PIPE)
out, err = app.communicate()
print out
Run Code Online (Sandbox Code Playgroud)

我希望输出显示为最终发生的一个大blob.想法?

python subprocess stdout

1
推荐指数
1
解决办法
2079
查看次数

标签 统计

bash ×2

grep ×1

pipe ×1

python ×1

stdin ×1

stdout ×1

subprocess ×1

tee ×1

terminal ×1