1

複数を生成subprocess.Popen(['commands', 'that', 'I', 'called'])し、それぞれに対して行うstdin.write(..)p.communicate(...)、コマンドと対話する場合、独立していることが保証され、各プロセス (呼び出されたコマンドからの stdout) に戻りますか?

4

2 に答える 2

2

これを行う場合:

proc = subprocess.Popen(
    cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, _ = proc.communicate()

プロセスごとに個別のパイプのセットを取得します。値subprocess.PIPEは、新しいパイプを作成するように指示する特別なフラグにすぎません。subprocess.Popen()したがって、上記のコマンドは 2 つの新しいパイプを作成します。1 つのパイプは 用stdinで、別のパイプは 用stdoutです。

これを行う場合:

proc = subprocess.Popen(cmd)
proc.wait()

新しいプロセスは、 、 、および をあなたのプロセスと共有stdinstdoutますstderr(基本的には、カーネル側が共有されます)。

于 2013-01-24T19:36:01.653 に答える
0

pythonについてはわかりませんが、Cに関する限り、パイプはプロセスごとに独立していません。

パイプは、親プロセスと子プロセスの間、または子プロセス自体の間で通信することのみを目的としています。

特定のプロセスによってパイプに書き込まれたデータは、パイプの読み取り側から別のプロセスによって読み取ることができます。

于 2013-01-24T19:32:08.383 に答える