私は2つのPythonスクリプト、foo.py
とbar.py
を持っています。私は今、私はbar.py
を実行し、foo.py.内のスクリプトをトリガするために、このファイルから標準出力を使用したいPythonの背景シェルスクリプト通信
python foo.py &
を使用してバックグラウンドでfoo.pyを実行していますこれは可能ですか?私はUbuntu 16.04 LTSを使用しています。
私は2つのPythonスクリプト、foo.py
とbar.py
を持っています。私は今、私はbar.py
を実行し、foo.py.内のスクリプトをトリガするために、このファイルから標準出力を使用したいPythonの背景シェルスクリプト通信
python foo.py &
を使用してバックグラウンドでfoo.pyを実行していますこれは可能ですか?私はUbuntu 16.04 LTSを使用しています。
あなたはそのためのUNIX named pipeを使用することができます。
まず、あなたがあなたのpythonファイルを持っている同じディレクトリにmkfifo named_pipe
を実行することにより、パイプオブジェクトの名前作成します。
あなたfoo.py
は、次のようになります。
while True:
for line in open('named_pipe'):
print 'Got: [' + line.rstrip('\n') + ']'
そして、あなたのbar.py
は次のようになります。python foo.py &
:だから
import sys
print >>open('named_pipe', 'wt'), sys.argv[-1]
、あなたはこのようなあなたの消費者のプロセスを実行します。 そして最後に、あなたがpython bar.py Hello
を実行するたびに、あなたはあなたのコンソールにメッセージGot: [Hello]
が表示されます。
UPD:という名前のパイプを使用すると、Paulの回答とは異なり、一方のプロセスをもう一方のプロセスから開始する必要はありません。
プロセス間pipes
を作成し、実際にはUNIXの世界から来ているシステムがあります。パイプは基本的にファイル記述子のペアであり、各プログラムはそれらの1つにアクセスします。他の読み取りながら、1つのプログラムが、パイプへの書き込み:
https://docs.python.org/2/library/subprocess.html
しかし、これはあなたがサブプロセスとしてfooとbarを開始し、その出力/入力を接続aditionalスクリプトが必要です。