2

最初のプロセスの stdin に文字列を送信し、2 番目のプロセスの stdin に stdout をチェーンしようとしています

最初のプログラムはpaps、テキスト ファイルまたは文字列を入力として受け取り、postscript ファイルを stdout に出力する、テキストから postscript へのコンバーターです。

2 番目のプログラムはlpr、ライン プリンター コマンドです。プロセスは次のようになります。

  1. First Program の stdin に文字列を書き込みます
  2. 最初のプログラムの出力を 2 番目の標準入力にパイプします。
  3. 2 番目のプログラムの出力は、UNIX では次のように単独で処理されます。

echo "The String" | paps | lpr

これが私がpython docsから試したことです。

#!/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 に送信されます。

4

1 に答える 1

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

どうstdout=PIPEですか?

于 2012-09-05T05:50:48.053 に答える