Table des matières

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.

Si les arguments initiaux à exec commencent avec un tiret alors ils sont traités comme des commutateurs de ligne de commande et ne font pas partie du pipeline. Les commutateurs suivants sont couramment supportés:

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”).

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 écrit 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 finissent 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.

Le premier mot de chaque commande est interprété comme le nom de la commande; la substitution tilde est effectuée, et si le résultat ne contient pas de slashes alors les répertoires dans la variable d'environnement PATH sont recherchés pour un exécutable donnés. Si le nom contient un slash alors il doit se référer à un exécutable accessible du répertoire courant. Aucune expansion “glob” ou autre substitutions shell-like ne sont effectuées sur les arguments des commandes.

Exemples

Voir aussi