想象一下my_binary
以这两种方式启动一个子进程(为了简单起见,我使用 bash,但我认为这也适用于 POSIX 系统上的其他语言):
#!/bin/bash
# 1) inherit stdout/stderr
my_binary
# 2) explicitly capture stdout/stderr
my_binary 2>&1 > output.log
二进制文件在捕获输出时通常会有不同的表现。例如,ls
通常会禁用捕获输出的颜色输出,除非使用 强制执行--color=always
。
现在考虑这样一种情况,my_binary
在捕获的输出下行为不同,但缺乏明确的输出控制机制,即相当于--color=always
。我试图找出:
- 内部使用什么机制来确定 I/O 流的功能?
- 是否可以从外部“伪造” I/O 流功能,即
my_binary
使用捕获的输出运行,但让其表现得就像没有捕获输出一样?