【发布时间】:2012-09-02 03:59:17
【问题描述】:
我正在尝试向第一个进程的标准输入发送一个字符串,并将它的标准输出链接到第二个进程的标准输入
第一个程序是paps,一个文本到postscript 转换器,它接受文本文件或字符串作为输入并将postscript 文件输出到stdout
第二个程序是lpr,行式打印机命令。流程是这样的:
- 将字符串写入第一个程序的标准输入
- 将第一个程序的输出通过管道传输到第二个程序的标准输入。
- 第二个程序的输出在 unix 中是这样自己处理的:
echo "The String" | paps | lpr
这是我从 python 文档中尝试过的。
#!/usr/bin/python
import sys
from subprocess import Popen,PIPE
paps=Popen(["/usr/local/bin/paps"],stdin=PIPE,stdout=PIPE)
lpr=Popen(["/usr/bin/lpr"],stdin=paps.stdout)
paps.communicate("ABCD")
paps.stdout.close()
lpr.communicate()[0]
这是来自文档:
#p1 = Popen(["dmesg"], stdout=PIPE)
#p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
#p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
#output = p2.communicate()[0]
在我的例子中,原始输出来自我的程序并被发送到第一个进程的标准输入。
【问题讨论】:
-
...和?别让我挂了!
-
那么,问题出在哪里?
标签: python subprocess