首頁 >後端開發 >Python教學 >如何在不使用 shell=True 的情況下安全地在 Python 的 subprocess 中傳輸進程?

如何在不使用 shell=True 的情況下安全地在 Python 的 subprocess 中傳輸進程?

Patricia Arquette
Patricia Arquette原創
2024-12-23 00:43:44920瀏覽

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

使用子進程進行管道傳輸

使用子進程進行管道傳輸涉及使用 shell 參數來產生具有支援管道輸出的 shell 的進程。但是,出於安全考慮,不建議使用 shell=True。

替代管道解決方案

要在不依賴 shell=True 的情況下對進程進行管道傳輸,請為每個命令建立單獨的進程並連接它們輸入和輸出流。例如:

這裡,ps 代表運行 ps -A 的進程,grep 是運行 grep 'process_name' 的進程。

適用於您的案例的簡化方法

在您的特定場景中,您可以簡單地調用subprocess.check_output(('ps', '-A')) ,而不是使用管道,然後在傳回的輸出上套用str.find 以檢查所需的進程。

以上是如何在不使用 shell=True 的情況下安全地在 Python 的 subprocess 中傳輸進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn