Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Prozesse in Pythons „Unterprozess' sicher weiterleiten, ohne „shell=True' zu verwenden?

Wie kann ich Prozesse in Pythons „Unterprozess' sicher weiterleiten, ohne „shell=True' zu verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-23 00:43:44887Durchsuche

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

Piping mit Unterprozess

Piping mit Unterprozess beinhaltet die Verwendung des Shell-Parameters, um den Prozess mit einer Shell zu erzeugen, die die Weiterleitung der Ausgabe unterstützt. Aus Sicherheitsgründen wird die Verwendung von „shell=True“ jedoch nicht empfohlen.

Alternative Piping-Lösung

Um Prozesse weiterzuleiten, ohne sich auf „shell=True“ zu verlassen, erstellen Sie für jeden Befehl separate Prozesse und verbinden Sie diese Eingabe- und Ausgabeströme. Zum Beispiel:

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)

Hier stellt ps den Prozess dar, der ps -A ausführt, und grep ist der Prozess, der grep 'Prozessname' ausführt.

Vereinfachter Ansatz für Ihren Fall

In Ihrem spezifischen Szenario können Sie anstelle der Verwendung von Pipes einfach subprocess.check_output(('ps', '-A')) aufrufen und dann str.find anwenden die zurückgegebene Ausgabe, um den gewünschten Prozess zu überprüfen.

Das obige ist der detaillierte Inhalt vonWie kann ich Prozesse in Pythons „Unterprozess' sicher weiterleiten, ohne „shell=True' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn