2

我正在尝试将一个字符串发送到第一个进程的标准输入并将它的标准输出链接到第二个进程的标准输入

第一个程序是paps一个文本到postscript的转换器,它接受一个文本文件或字符串作为输入,并将一个postscript文件输出到stdout

第二个程序是lpr,行打印机命令。过程是这样的:

  1. 将字符串写入第一个程序的标准输入
  2. 将第一个程序的输出通过管道传输到第二个程序的标准输入。
  3. 第二个程序的输出在 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]

就我而言,原始输出源自我的程序,并被发送到第一个进程的标准输入。

4

1 回答 1

2
lpr=Popen(["/usr/bin/lpr"],stdin=paps.stdout)

怎么样stdout=PIPE

于 2012-09-05T05:50:48.053 回答