Pythonで子プロセス(こちらも自作のPython)を起動して、
呼び出し元のプロセスと、子プロセスを連携するプログラムを考えています。
subprocessで子プロセスを起動して、
子プロセスの出力を得る方法は調べれたのですが
子プロセスが
呼び出し元のプロセスからの送信データを
受信する命令が分かりません。
何を言っているかと言いますと
下記URLに書かれている
file_input.pyは
呼び出し元のプロセスから、データを受信しているようですが
file_input.pyのソースコードが掲載されていない為
受信する命令が分かりません。
http://blog.panicblanket.com/archives/690
どのような命令を書いたら
子プロセスは呼び出し元からの送信データを受信できるかを
どなたか教えていただけませんでしょうか。
特にsubprocessに拘っているわけではないので
他の方法があれば、その方法を教えていただけると助かります。
よろしくお願いいたします。
http://docs.python.jp/2/library/subprocess.html
subprocess.Popen の引数に stdin があるので、そこに POPEN を指定します。
返って来た Popen のインスタンスに対して、stdin に対して write するか、communicate の引数としてデータを渡せば良いみたいです。
呼び出された子プロセスは、sys.stdin から read とかします。
http://stackoverflow.com/questions/18046499/python-subprocess-pipes-stdin-without-using-files
import subprocess proc = subprocess.Popen('shell command', stdin=subprocess.PIPE) proc.stdin.write("my data")
from subprocess import Popen, PIPE, STDOUT p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT) grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0] print(grep_stdout.decode())
a-kuma3様
2015/05/30 14:57:37sys.stdinのreadで取得できました。
ご回答頂き、ありがとうございました。