wim*_*wim 7 python subprocess pipe popen named-pipes
我有一个像下面这样的结构:
os.mkfifo('pipe.tmp')
enc = Popen(['encoder', '-i', 'pipe.tmp'])
cap = Popen(['capture', '-f', 'pipe.tmp'])
Run Code Online (Sandbox Code Playgroud)
这cap是一个通常写入文件(由...指定-f)的过程,但我可以通过提供/dev/stdout输出文件将数据写入屏幕.类似地,enc期望从类似文件的对象读取,并且我能够通过提供-输入来从管道读取它.所以不是在os中使用命名管道,我认为特殊文件可能没有必要,我可以使用这样的未命名管道..
cap = Popen(['capture', '-f', '/dev/stdout'], stdout=PIPE)
enc = Popen(['encoder', '-i', '-'], stdin=cap.stdout)
cap.stdout.close()
Run Code Online (Sandbox Code Playgroud)
(还要注意产卵顺序的逆转).我更喜欢这个,因为临时文件似乎没必要,但我有点担心这个构造是否会以我期望的方式链接进程.
/dev/stdout那cap是从OS的实际标准输出谈论不同?也就是说,与输入管-在enc我会得到这两个过程之间的数据,即使其他进程正在逢到到/ dev的/清洁的信道标准输出在OS上?cap/ enc不能快速写入/读取,将在任一端阻塞,但如果我错了,请纠正我. | 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |