Bonjour, je voudrais en pythoin récuperer les variables d’environnement d’un processus dans linux en shell pour ce faire je faire un :
1 | cat /proc/<pid>/environ |
sauf que j’ai toute mes variables dans 1 ligne, ce qui est illisible et non parsable par la suite var1=totovar2=tutuvar3=titi
du coup je fais cette commande :
1 | xargs --null --max-args=1 < /proc/<pid>/environ |
la j’ai toute mes variables avec un saut de ligne pour chaque variable par exemple : var1=toto var2=tutu var3=titi
maintenant je voudrais exécuter cette commande dans un programme en python avec subprocess :
1 2 3 4 5 6 7 8 9 10 11 12 | from subprocess import Popen, PIPE def get_value_variable(pid): cmd=["xargs","--null","--max-args=1","<","/proc/"+pid+"/environ"] process = Popen(cmd, stdout=PIPE, stderr=PIPE) stdout, stderr = process.communicate() print(stdout ) """for line in stdout: print line""" get_value_variable("1080") |
sauf que le programme freeze, il se bloque sans rien m’afficher, je fais ctrl+c et voila mon erreur :
1 2 3 4 5 6 7 8 9 10 11 | ^CTraceback (most recent call last): File "mypid.py", line 13, in <module> get_value_variable("1080") File "mypid.py", line 8, in get_value_variable stdout, stderr = process.communicate() File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate return self._communicate(input) File "/usr/lib64/python2.7/subprocess.py", line 1401, in _communicate stdout, stderr = self._communicate_with_poll(input) File "/usr/lib64/python2.7/subprocess.py", line 1455, in _communicate_with_poll ready = poller.poll() |
je pense que ma syntaxe est correcte, y’a peut etre une option dans Popen a rajouter/modifier pour régler ce probleme ?
+0
-0