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