如何使用std [in / out / err]以外的文件描述符?

时间:2015-11-07 16:26:25

标签: python python-3.x python-3.4 file-descriptor

我需要从Python(3.4)脚本将两个数据流传输到外部程序。一个人可以去STDIN,我就可以了:

from subprocess import check_output

data1 = b'This is the data to pass on stdin'
check_output(['externalprogram'], input=data1)

程序可以接受命令行上给出的文件描述符上的另一个部分,但是如何告诉python在另一个fd上发送数据?

data2 = b'This is the data to pass on fd 3'
check_output(['externalprogram', '-data2fd', '3'], input=data1, ???)

我想我可能需要更深层次地使用Popen,但我仍然不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

至少在Linux上,您可以使用os.pipe来创建管道。调用子进程时,它继承父管道。父级应关闭读端以避免伪信号,然后写入管道的写侧。然后,孩子可以从管道的读取端读取。