是否可以在 Popen 调用中捕获 stdin、stdout 和 stderr 以外的数据流?

Is it possible to catch data streams other than stdin, stdout and stderr in a Popen call?

我正在努力将程序 (samtools) 合并到管道中。 FYI samtools 是一个用于操作 SAM 格式的 DNA 序列比对的程序。它接受输入并通过 stdin 和 stdout 生成输出文件,因此很容易通过 pythons subprocess.Popen().

进行控制

当它运行时,它还会向控制台输出短消息 - 显然不使用标准输出 - 我想知道 pos 是否也可以捕获这些消息 - 可能通过获取 os 生成处理程序列表?

我想我的一般问题是,如果程序控制台输出不是来自 stdout,是否可以捕获它?os?谢谢。

除了 stdout 和 stderr 没有其他控制台输出(假设 samtools 不直接通过 tty 设备写入终端)。因此,如果输出没有被子进程 stdout 捕获,它一定已经被写入 stderr,也可以使用 Popen()stderr=subprocess.PIPE 并检查 stderr 属性来捕获结果过程对象。