Salut Tu parle , il est pas élégant ce code ;) , il déchire OUI :), Juste que en plus des methodes poll ,Supprocess.Popen contient plusieurs autres méthodes qui permettent de faire attendre le pocess fils jusqu'a ce qu'il soit terminé avant de donner la main au processus père . Regarde *communicate* et *wait*, ils permettent de simuler ce que tu fait avec ta bouble.Voici une liste des méthodes de subprocess.Popen, mais il y'a en plus je crois , ma version de Python n'est pas a jour.
__class__ __del__ __delattr__ __dict__ __doc__ __format__ __getattribute__ __hash__ __init__ __module__ __new__ __reduce__ __reduce_ex__ __repr__ __setattr__ __sizeof__ __str__ __subclasshook__ __weakref__ _communicate _execute_child _find_w9xpopen _get_handles _internal_poll _make_inheritable _readerthread _translate_newline communicate kill poll send_signal terminate wait 1 - [http://docs.python.org/library/subprocess.html#subprocess.Popen.wait] A+ Le 9 mai 2011 16:58, Thomas AYIH-AKAKPO <[email protected]> a écrit : > 'lut > > Je me suis lancé dans la gestion des processus en Python et je me heurte à > un petit souci. Je vais partir d'un exemple. > On va imaginer que je lance un ping, et que si jamais le processus se > termine (quelque soit la manière) j'affiche un texte. > > Moi je le coderais comme ceci: > > import subprocess, shlex, time > > commande = "ping dakarlug.org" > args = shlex.split(commande) > f = open("sortie.txt","w") > logfile = open("log.txt","w") > process = subprocess.Popen(args, stdout=f, stderr=logfile) #la commande est > lancée en arrière plan > > while True: > r = process.poll() #poll va renvoyer un entier si jamais le processus > est terminé, quelque soit la raison. > if r is not None > print "process ended" > time.sleep(10) > > > Je trouve que ça marche, seulement ça ne me parait pas très élégant ma > boucle infinie. > Quelqu'un parmi vous aurait des suggestions? > Je cherche trop loin et en fait cette façon de faire est bonne? > Pensez vous qu'il faille gérer autrement? > > Waiting for your advices, > Merci ;) > > -- > e-mail: [email protected] > jabber: [email protected] > > > -- > Ce message a été envoyé à la liste [email protected] > Gestion de votre abonnement : http://dakarlug.org/liste > Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug > Le site du DakarLUG : http://dakarlug.org >
-- Ce message a été envoyé à la liste [email protected] Gestion de votre abonnement : http://dakarlug.org/liste Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug Le site du DakarLUG : http://dakarlug.org
