使用子进程进行管道传输涉及使用 shell 参数来生成具有支持管道输出的 shell 的进程。但是,出于安全考虑,不建议使用 shell=True。
要在不依赖 shell=True 的情况下对进程进行管道传输,请为每个命令创建单独的进程并连接它们输入和输出流。例如:
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE) output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
这里,ps 代表运行 ps -A 的进程,grep 是运行 grep 'process_name' 的进程。
在您的特定场景中,您可以简单地调用 subprocess.check_output(('ps', '-A')) ,而不是使用管道,然后在返回的输出上应用 str.find 以检查所需的进程。
以上是如何在不使用 shell=True 的情况下安全地在 Python 的 subprocess 中传输进程?的详细内容。更多信息请关注PHP中文网其他相关文章!