每个进程中的管道是否独立



如果我生成多个subprocess.Popen(['commands', 'that', 'I', 'called'])并且对于每个,我stdin.write(..)p.communicate(...)与命令交互,它是否保证是独立的,并且会回到每个进程(来自被调用命令的stdout)?

如果这样做:

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

您将获得每个进程的一组单独的管道。 值 subprocess.PIPE 只是一个特殊的标志,用于告诉subprocess.Popen()创建新管道 - 因此上面的命令创建了两个新管道:一个用于stdin的管道和一个用于stdout的单独管道。

如果这样做:

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

新进程将与您的进程共享stdinstdoutstderr(嗯,基本上 - 内核端将被共享)。

我不

了解python,但就C而言,管道对于每个进程都不是独立的。

管道仅用于在父进程和子进程之间甚至子进程本身之间进行通信。

特定进程写入管道中的数据可以由另一个进程从管道的读取端读取。

最新更新