最初のプロセスの stdin に文字列を送信し、2 番目のプロセスの stdin に stdout をチェーンしようとしています
最初のプログラムはpaps
、テキスト ファイルまたは文字列を入力として受け取り、postscript ファイルを stdout に出力する、テキストから postscript へのコンバーターです。
2 番目のプログラムはlpr
、ライン プリンター コマンドです。プロセスは次のようになります。
- First Program の stdin に文字列を書き込みます
- 最初のプログラムの出力を 2 番目の標準入力にパイプします。
- 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 に送信されます。