Le problème est que le processus n'est pas démarré. L'objet est créé, mais il y a et il n'y avait pas de processus.Popen confusion - rediriger la sortie, les méthodes ne fonctionnent pas
Si je mets un time.sleep() avant l'instruction os.kill, je perds le contrôle. Le processus commence, mais il n'est pas tué. De plus, mon stdout est perdu. Tout ce que je tape n'apparaît pas (je suppose que ça va aussi à zéro). Je dois fermer le terminal, ouvrez une nouvelle, et de tuer le processus manuellement (à partir de python et l'émission cette commande exacte fait le travail, ce qui est bon à savoir)
airodump = subprocess.Popen('airodump-ng -w outputfile mon0',shell=True,stdout=open('/dev/null', 'w'), stderr=open('/dev/null', 'w'))
#time.sleep(5)
os.kill(airodump.pid, signal.SIGTERM) # airodump-ng
#airodump.wait()
print airodump
J'ai essayé d'invoquer les méthodes Popen .terminate(), Popen.kill(). Il me manque quelque chose avec Popen ....
Même lorsque je mets un Popen.wait() avant "print airodump" il est simplement contourné et l'adresse de l'objet est imprimée. Cette petite bizarrerie est ce qui m'a convaincu que quelque chose ne va pas dans ma compréhension de ce qui se passe.
où voulez-vous aller à stdout? Vous dites que c'est perdu mais vous l'envoyez '/ dev/null'. –
Je ne m'inquiète pas où stdout va, juste faire cela pour plus de commodité. tout ce que je veux, c'est que airodump fonctionne pendant quelques secondes, puis arrête (tue le processus), et la fonctionnalité soit retournée au programme. – ojef
tout ce qui m'importe est le fichier qui est généré. Je trouve juste intéressant que stdout étant envoyé à null "porte" – ojef