首页 > 后端开发 > Python教程 > 如何在不使用 shell=True 的情况下安全地在 Python 的 subprocess 中传输进程?

如何在不使用 shell=True 的情况下安全地在 Python 的 subprocess 中传输进程?

Patricia Arquette
发布: 2024-12-23 00:43:44
原创
918 人浏览过

How Can I Safely Pipe Processes in Python's `subprocess` Without Using `shell=True`?

使用子进程进行管道传输

使用子进程进行管道传输涉及使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板