用spawnProcess扭转管道两个进程

时间:2014-04-11 12:14:17

标签: python process pipe twisted

我试图使用Twisted with Python2.7来管理两个进程。

我想做的是:

myImagesPipesGenerator | ffmpeg -i -

myImagesPipesGenerator在stdout上输出无限的BMP图像列表。 FFmpeg正在stdin上获取这些图片并在视频中对它们进行编码

所以我需要:

generatorTransport = reactor.spawnProcess(myInputProtocol, "myImagesPipesGenerator", ["myImagesPipesGenerator",], env=None, childFDs={0:'w', 1:'r', 2:'r'})
ffmpegTransport = reactor.spawnProcess(myOutputProtocol, "ffmpeg", ["ffmpeg","-i","-"], env=None, childFDs={0:__What_to_use_here__, 1:'r', 2:'r'})

如何获得"输出" generatorTransport stdout管道的文件描述符,所以我可以在childFDs中为ffmpegTransport使用它吗?

感谢您的帮助,

1 个答案:

答案 0 :(得分:2)

自己创建管道:

read, write = os.pipe()

然后传递您希望孩子们使用它们的文件描述符。类似的东西:

generatorTransport = reactor.spawnProcess(..., childFDs={1: write})
ffmpegTransport = reactor.spawnProcess(..., childFDs={0: read})