2009-11-04 6 views
2

Je veux obtenir la liste des processus en cours d'exécution sur le Mac, semblable à ce que vous obtenez de « ps -ea »Comment puis-je obtenir la liste complète des processus en cours d'exécution sur un Mac à partir d'une application python

Je os.popen ('ps -ea') mais cela ne fait que répertorier un petit sous-ensemble des processus, vraisemblablement ceux appartenant au shell propriétaire.

D'autres options que j'ai essayé sont

'sh -c /bin/ps -ea' 
'bash -c /bin/ps -ea' 
'csh -c /bin/ps -ea' 
Running as root via sudo 
data = subprocess.Popen(['ps','ea'], stdout=subprocess.PIPE).stdout.readlines() 

Quels sont les autres méthodes qui pourraient me donner l'information complète de processus d'inscription?

Ceci est pour une application wx python pour surveiller des processus spécifiques et repérer quand ils meurent.

+0

vous pouvez essayer le module de sous-processus si votre version de Python est 2.4 ++. Juste curieux, pourquoi voulez-vous faire cela en Python? – ghostdog74

+0

J'obtiens la même sortie lorsque j'appelle ps -ea depuis le terminal ou en utilisant os.popen ('ps -ea'). Êtes-vous sûr de lire complètement l'objet fichier? –

+0

os.popen ('ps aux') me donne la liste complète, os.popen ('ps ea') me donne une liste minimale, donc je suis assez sûr que je suis –

Répondre

7

os.popen('ps aux') ressemble à la liste de tous les processus pour moi.

+0

et il le fait pour moi aussi! Merci. –

+0

Essayez d'utiliser 'subprocess.Popen' - c'est l'approche préférée. –

+0

data = subprocess.Popen (['ps', 'aux'], stdout = sous-processus.PIPE) .stdout.readlines() fonctionne aussi bien –

Questions connexes