我需要从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
,但我仍然不知道该怎么做。
答案 0 :(得分:1)
至少在Linux上,您可以使用os.pipe
来创建管道。调用子进程时,它继承父管道。父级应关闭读端以避免伪信号,然后写入管道的写侧。然后,孩子可以从管道的读取端读取。