[gull] probleme avec python et l'execution d'un programme externe
Daniel Cordey
dc at mjt.ch
Tue Feb 7 22:48:37 CET 2006
On Tuesday 07 February 2006 21:47, Dominique-Georges Branciard wrote:
> try:
> ok = os.execl('cnvimage', 'cnvimage', ctrfile.file_dir + fichierc,
> exten )
> except:
> print "error: "
> print "OK %s" % ok
Bon, si l'execution de la ligne 'ok =...' engendre l'execution du code dans
'except', la variable 'ok' ne serait pas 'assignee'. Il faut donc rajouter :
ok = 'ragnagna'
a la ligne suivant ou precedent le 'print "error: ". Ou alors j'ecrirais
plutot :
try:
ok = os.execl('cnvimage', 'cnvimage', ctrfile.file_dir + fichierc, exten )
print 'OK'
except :
print 'Execution failed'
C'est plus simple.
En essayent ton programme, on voit que le probleme ne reside pas dans le code
Python. En effet, comme je n'ai pas ton code 'cnvimage', j'ai remplace
celui-ci par le programme 'ls' et tout fonctionne parfaitement... Sauf que...
tu appelles la fonction exec()... ce qui fait que tu remplaces l'executable
actuel (ton intrepreteur Python) par le code de cnvimage !!!
Donc, soit tu fais d'abord un fork(), puis le exec() dans le process fils,
tout en continuant la boucle dans le process pere (attention au nombre de
process generes en // !!! (*)), soit tu utilises betement la commande
system()... qui a aussi l'avantage d'attendre la fin de l'execution de ton
programme.
dc
(*) : Tu peux utiliser wait() en conjoction avec le fork()/exec()
More information about the gull
mailing list