UpsSys.Executer

Fonction Habilitation Optimiser(Invariant, PasDEffetDeBord) Executer(Commande : Nul Ou Caractere, Synchrone : Booleen=Vrai, Cacher : Booleen=Faux, NumeroProcessusFils : Entier=? Sortie, RepertoireInitial : Nul Ou Caractere=Nul, EcrireEntree : Nul Ou Fonction() Retourner Nul Ou Caractere=Nul, LireSortie : Nul Ou Procedure(M:Caractere)=Nul) Retourner Entier;

Description

La fonction Executer permet d'exécuter un nouveau programme en lançant la commande Commande. Cette commande doit comporter à la fois le programme à lancer et les paramètres nécessaires à son lancement. Ce programme ne peut pas être une instruction de l'interpréteur de commandes du système d'exploitation.

Si la valeur d'un paramètre comporte le caractère espace, alors celle-ci doit être encadrée de caractères guillemet " ou de caractères apostrophe '.

Si Commande est Nul, alors le résultat est zéro.

Si Cacher est Vrai, alors l'exécution est cachée de l'utilisateur. Ce paramètre est particulièrement important pour les applications fenêtrées.

Si Synchrone est Vrai, alors l'exécution est synchronisée. Ainsi, la fonction Executer retourne uniquement quand l'exécution du sous-programme est terminée. En ce cas, le résultat de Executer est le code-retour du programme. Si Synchroniser est Faux, alors l'exécution est asynchrone et s'effectue en parallèle du programme courant. Ainsi, la fonction Executer retourne dès que l'exécution du sous-programme est lancée. En ce cas, le résultat de Executer est zéro.

Quel que soit le mode d'exécution, NumeroProcessusFils recueille le numéro de processus du nouveau programme.

Si RepertoireInitial est précisé, alors le répertoire initial du nouveau programme correspond à cette valeur. Sinon, il s'agit du répertoire courant.

Il est possible de rediriger les entrées-sorties du programme depuis ou vers des fichiers. Cela s'effectue de la manière suivante :

Il est possible d'écrire dans l'entrée standard du nouveau processus et de lire dans la sortie standard du nouveau processus. Ainsi, les valeurs écrites par EcrireEntree() du programme courant seront lues par les instructions Clavier.Lire() du nouveau programme ; les valeurs écrites par Ecran.Ecrire() du nouveau programme seront lues par LireSortie() du programme courant. Ceci est le principe tuyaux anonymes (anonymous pipes). Les appels aux procédures et fonctions EcrireEntree() et LireSortie() sont gérées de manière asynchrone par Up ! System. Ces mécanismes lecture et écriture ont priorité sur la redirection des entrées-sorties.

Exemple

Principal
/*******/
Variable
/******/
Debut
...
?=Executer("notepad.exe", Faux, Faux, PIdNotePad);
/* Lance le bloc-notes. */
?=Executer("cat < c:/tmp/ListeFichiers.txt > c:/tmp/Sortie.txt", Faux, Faux, PIdNotePad);
/* Concatène le contenu des fichiers énumérés dans 'c:\tmp\ListeFichiers.txt' au moyen de la commande 'cat'. Le résultat de la concaténation est redirigée dans le fichier 'c:\tmp\Sortie.txt'. */
...
Fin Principal

Voir aussi

LireCodeRetour pour récupérer le code-retour d'un programme exécuté en asynchrone. DemarrerService pour démarrer un service du système d'exploitation.

Traduction

---------