2016-09-03 7 views
2

私は2つのPythonスクリプト、foo.pybar.pyを持っています。私は今、私はbar.pyを実行し、foo.py.内のスクリプトをトリガするために、このファイルから標準出力を使用したいPythonの背景シェルスクリプト通信

python foo.py & 

を使用してバックグラウンドでfoo.pyを実行していますこれは可能ですか?私はUbuntu 16.04 LTSを使用しています。

答えて

2

あなたはそのための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の回答とは異なり、一方のプロセスをもう一方のプロセスから開始する必要はありません。

0

プロセス間pipesを作成し、実際にはUNIXの世界から来ているシステムがあります。パイプは基本的にファイル記述子のペアであり、各プログラムはそれらの1つにアクセスします。他の読み取りながら、1つのプログラムが、パイプへの書き込み:

https://docs.python.org/2/library/subprocess.html

しかし、これはあなたがサブプロセスとしてfooとbarを開始し、その出力/入力を接続aditionalスクリプトが必要です。

関連する問題