究竟将stdout(或stdin)设置为subprocess.PIPE在Popen中?

问题描述 投票:2回答:1

[我已经读过 python中的documentation about subprocesses,但仍然不能完全理解。

[使用Popen时,我们将参数stdout(或stdin)设置为subprocesses.PIPE,这实际上是什么意思?

文档说

stdin,stdout和stderr指定执行程序的标准 输入,标准输出和标准错误文件句柄, 分别... PIPE指示应该给孩子的新管道 已创建。

这是什么意思?

例如,如果我有两个都带有stdout到PIPE的子进程,输出是混合在一起的吗? (我不这么认为)

更重要的是,如果我有一个将stdout设置为PIPE的子进程,然后又有另一个将stdin设置为PIPE的子进程,那条管道是相同的,其中一个输出到另一个?

有人可以向我解释一下对我来说有些秘密的文档部分吗?


附加说明:例如

import os
import signal
import subprocess
import time

# The os.setsid() is passed in the argument preexec_fn so
# it's run after the fork() and before  exec() to run the shell.
pro = subprocess.Popen("sar -u 1 > mylog.log", stdout=subprocess.PIPE, 
                       shell=True, preexec_fn=os.setsid) 

// Here another subprocess
subprocess.Popen(some_command, stdin=subprocess.PIPE)
time.sleep(10)

os.killpg(os.getpgid(pro.pid), signal.SIGTERM) 

sar的输出是否作为“某些命令”的输入?

我已经阅读了有关python中子过程的文档,但仍然不太了解。使用Popen时,我们将参数stdout(或stdin)设置为subprocesses.PIPE,什么...

python subprocess pipe
1个回答
-1
投票

请参阅document

© www.soinside.com 2019 - 2024. All rights reserved.