Maison >développement back-end >Tutoriel Python >Comment puis-je diriger en toute sécurité des processus dans le « sous-processus » de Python sans utiliser « shell=True » ?

Comment puis-je diriger en toute sécurité des processus dans le « sous-processus » de Python sans utiliser « shell=True » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-23 00:43:44917parcourir

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

Piping avec sous-processus

Piping avec sous-processus implique l'utilisation du paramètre shell pour générer le processus avec un shell qui prend en charge la transmission de la sortie. Cependant, pour des raisons de sécurité, il n'est pas recommandé d'utiliser shell=True.

Solution de tuyauterie alternative

Pour canaliser les processus sans compter sur shell=True, créez des processus distincts pour chaque commande et connectez leurs flux d’entrée et de sortie. Par exemple :

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

Ici, ps représente le processus exécutant ps -A et grep est le processus exécutant grep 'process_name'.

Approche simplifiée pour votre cas

Dans votre scénario spécifique, au lieu d'utiliser des tuyaux, vous pouvez simplement appeler subprocess.check_output(('ps', '-A')) puis appliquer str.find sur la sortie renvoyée pour vérifier le processus souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn