我正在尝试将字符串发送到第一个进程的stdin并将其stdout链接到第二个进程的stdin
第一个程序是paps
,一个到postscript转换器的文本,它接受一个文本文件或字符串作为输入,并将一个postscript文件输出到stdout
第二个程序是lpr
,行打印机命令。过程如下:
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]
在我的例子中,原始输出源自我的程序并被发送到第一个进程的stdin。
答案 0 :(得分:2)
lpr=Popen(["/usr/bin/lpr"],stdin=paps.stdout)
stdout=PIPE
怎么样?