Pythonのsubprocess
モジュールを使用して、子プロセスのstdin
に書き込む方法について説明します。この方法は、Pythonスクリプトから別のプログラムを制御する際に役立ちます。
まず、subprocess.Popen
を使用して新しいプロセスを開始します。この関数は、新しいプロセスを開始し、そのプロセスのstdin
、stdout
、およびstderr
へのパイプを提供します。
from subprocess import Popen, PIPE, STDOUT
p = Popen(['myapp'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
次に、Popen.communicate
メソッドを使用して、stdin
にデータを書き込みます。
stdout_data = p.communicate(input='data_to_write')[0]
このメソッドは、データをstdin
に書き込み、stdout
とstderr
からデータを読み取ります。
注意点として、communicate
メソッドはプロセスが終了するまでブロックします。したがって、プロセスが永久にブロックする可能性がある場合や、複数のプロセスと同時に対話する必要がある場合は、このメソッドを使用するのは適していないかもしれません。
以上がPythonのsubprocess
モジュールを使用して、子プロセスのstdin
に書き込む基本的な方法です。これにより、Pythonスクリプトから他のプログラムをより効果的に制御できます。