Satimage Précédent | Suivant
Surveillance du déroulement d'un exécutable UNIX
Accueil ▸ Documentation ▸ Smile ▸ Calcul numérique ▸ Exploitation de programmes externes ▸ Exploitation d'un exécutable UNIX ▸ Surveillance du déroulement d'un exécutable UNIX  
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.
English version
Copyright ©2008 Paris, Satimage