Exec

From Base de connaissances eggdrops & TCL
Jump to: navigation, search

exec - Appelle un ou des sous-processus

Syntaxe

exec ?switches? arg ?arg ...?

Description

Cette commande traite ses arguments comme la spécification d'exécution d'un ou plusieurs sous-processus. Les arguments prennent la forme d'un pipeline shell standard où chaque arg devient un mot d'une commande, et chaque commande distincte devient un sous-processus.


  • -keepnewline: Insère un saut de ligne dans la sortie de pipeline. Normalement le saut de ligne sera effacé.
  • --: Marque la fin des commutateurs. L'argument suivant sera traité comme le premier arg même s'il commence avec un tiret.

Si un arg (ou paire d'args) a une des formes décrites ci-dessous alors il est utilisé par exec pour contrôler les flux d'entrée et de sortie dans le(s) sous-processus. Ces arguments ne seront pas transmis au(x) sous-processus. Sous les formes telles que "< fileName", fileName peut soit être dans un argument séparé de "<" ou dans le même argument sans espace (ex. "<fileName").

  • |: Sépare des commandes distinctes dans le pipeline. La sortie standard de la commande précédente sera injectée dans l'entrée standard de la commande suivante.
  • |&: Sépare des commandes distinctes dans le pipeline. L'ensemble sortie standard et erreur standard de la précédante commande sera injectée dans l'entrée standard de la commande suivante. Cette forme de redirection surcharge les formes telles que 2> et >&.
  • < fileName Le fichier designé par fileName est ouvert et utilisé comme l'entrée standard pour le première commande dans le pipeline.
  • <@ fileId: fileId doit être l'identificateur pour un fichier ouvert, tel que la valeur de retour d'un précédent appel de open. Il est utilisé comme l'entrée standard de la première commande dans le pipeline. FileId doit avoir été ouvert en lecture.
  • <<
  • > fileName: La sortie standard de la dernière commande est redirigée sur un fichier nommé fileName, en écrasant son précedent contenu.
  • 2> fileName: L'erreur standard de toute commande dans le pipeline est redirigée sur un fichier nommé fileName, en écrasant son précedent contenu.
  • >& fileName: L'ensemble sortie standard de la dernière commande et erreur standard de toute commande sont redirigée sur un fichier nommé fileName, en écrasant son contenu précédent .


  • >@ fileId: fileId doit être l'identificateur d'un fichier ouvert, tel que la valeur de retour d'un précédent appel de open. La sortie standard de la dernière commande est redirigée vers le fichier fileIds, qui doit avoir été ouvert en écriture.
  • 2>@ fileId: fileId doit être l'identificateur d'un fichier ouvert, tel que la valeur de retour d'un précédent appel de open. L'erreur standard de toute commande dans le pipeline est redirigée vers le fichier fileId. Le fichier doit avoir été ouvert en écriture.
  • >&@ fileId: fileId doit être l'identificateur pour un fichier ouvert, tel que la valeur de retour d'un précédent appel de open. L'ensemble sortie standard de la dernière commande et erreur standard from toute commande sont redirigée vers le fichier fileId. Le fichier doit avoir été ouvert en écriture.

Si la sortie standard n'a pas été redirigée alors la commande exec retourne la sortie standard de la dernière commande dans le pipeline. Si une des commandes dans le pipeline finit anormalement ou est killed ou suspendue, alors exec renverra une erreur et le message d'erreur inclura la sortie du pipeline suivi par le message d'erreur décrivant la terminaison anormale; la variable errorCode contiendra des informations supplémentaires concernant la dernière terminaison anormale rencontrée. Si une des commandes ecrit vers son fichier standard d'erreur et que cette erreur standard n'est pas redirigée, alors exec renverra une erreur; le message d'erreur inclura la sortie standard du pipeline, suivi par les messages au sujet de la terminaison anormale (si elle existe), suivi par la sortie d'erreur standard .

Si le dernier caractère du résultat ou du message d'erreur est un saut de ligne alors ce caractère est normalement effacé du résultat ou du message d'erreur. Ceci est cohérent par rapport aux autres valeurs de retour Tcl, qui ne finisssent normalement pas avec des sauts de ligne. Néanmoins, si -keepnewline est spécifié alors le saut de ligne est ajouté.

Si l'entrée standard n'est pas redirigée avec "<" ou "<<" ou "<@" alors l'entrée standard pour la première commande dans le pipeline est prise de l'entrée standard de l'application courante.

Si le dernier arg est "&" alors le pipeline sera exécuté en arrière-plan. Dans ce cas la commande exec renverra une liste dont les éléments sont les identificateurs de processus pour tous les sous-processus dans le pipeline. La sortie standard de la dernière commande dans le pipeline ira dans la sortie standard de l'application si elle n'a pas été redirigée, et la sortie d'erreur de toutes les commandes dans le pipeline ira vers le fichier standard d'erreur de l'application sauf si elle est redirigée.


Voir également

open, puts, flush, gets, read, eof, close, socket, seek, tell, fconfigure, fblocked, fcopy