[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