Lorsque l'exécution de votre code dure plus de quelques secondes, vous voudrez sûrement l'exécuter en arrière-plan.
-
Pour exécuter un code en arrière-plan, rajoutez le caractère & à la fin de votre commande, et dirigez les résultats et les erreurs vers un fichier avec &>.
do shell script vous rendra la main immédiatement, pendant que la commande s'exécutera.
-- assume f_in is the POSIX path to some data file with extension .ctl
set f_out to change ".ctl$" into ".out" in f_in with regexp
set sh_scpt to "/sw/bin/spl " & f_in & " &> " & f_out & " &"
do shell script sh_scpt
-
Pour exécuter un code en arrière-plan sans diriger ses résultat vers un fichier, remplacez le fichier par /dev/null :
set sh_scpt to "/sw/bin/spl " & f_in & " &> /dev/null &"
do shell script sh_scpt
-
Pour faire en sorte que votre script attende la fin de l'exécution d'une commande, interrogez le process dans une boucle, et insérez la commande smilepause pour que l'application reste réactive : vous pourrez continuer à utiliser Smile pendant que votre script est en attente.
repeat
if "/sw/bin/spl" is not in (do shell script "ps -xww") then exit repeat
smilepause 0.01
end repeat
set s to read POSIX file f_out
-
Pour interrompre l'exécution de votre script alors qu'il exécute une boucle contenant un smilepause, il suffit de presser la touche esc. Cela lancera une erreur error number -128 ("Annulé par l'utilisateur") qui, à moins d'être attrapée avec une structure try [...] end try, arrêtera l'exécution du script.
|