Loading

NOM

       execl, execlp, execle, execv, execvp - Exécuter un fichier

SYNOPSIS

       #include <unistd.h>

       extern char **environ;

       int execl(const char *path, const char *arg, ...);
       int execlp(const char *file, const char *arg, ...);
       int execle(const char *path, const char *arg,
        ..., char * const envp[]);
       int execv(const char *path, char *const argv[]);
       int execvp(const char *file, char *const argv[]);

       La  famille des fonctions exec() remplace l’image du processus en cours
       par une nouvelle image du processus. Les fonctions décrites dans  cette
       page  sont  en  réalité  des  frontaux pour execve(2) (voyez la page de
       manuel de execve(2) pour plus de détails sur le remplacement de l’image
       du processus en cours).

       L’argument  initial  de  toutes  ces fonctions est le chemin d’accès du
       fichier à exécuter.

       Les arguments const char *arg ainsi que les points  de  suspension  des
       fonctions  execl(), execlp(), et execle() peuvent être vues comme arg0,
       arg1, ..., argn. Ensemble, ils décrivent une liste  d’un  ou  plusieurs
       pointeurs  sur  des  chaînes de caractères terminées par des caractères
       nuls, qui constituent les arguments disponibles  pour  le  programme  à
       exécuter.  Par  convention, le premier argument doit pointer sur le nom
       du fichier associé au programme à exécuter. La liste des arguments doit
       se  terminer  par  un  pointeur  NULL, et puisque ce sont des fonctions
       variadiques, ce pointeur doit être transtypé avec (char *) NULL.

       Les fonctions execv() et execvp() utilisent un tableau de pointeurs sur
       des  chaînes  de  caractères  terminées  par  des  caractères nuls, qui
       constituent les arguments disponibles pour le programme à exécuter. Par
       convention,  le  premier  argument  doit  pointer sur le nom du fichier
       associé au programme à  exécuter.  Le  tableau  de  pointeurs  doit  se
       terminer par un pointeur NULL.

       La   fonction  execle()  peut  également  indiquer  l’environnement  du
       processus à exécuter en faisant suivre le pointeur NULL qui termine  la
       liste  d’arguments,  ou  le  pointeur  du tableau argv par un paramètre
       supplémentaire. Ce paramètre additionnel est un  tableau  de  pointeurs
       sur  des  chaînes  de caractères terminées par des caractères nuls, qui
       doit se terminer par un pointeur NULL. Les autres fonctions fournissent
       au  nouveau processus l’environnement constitué par la variable externe
       environ.

   Sémantique particulière pour execlp() et execvp()
       Les  fonctions  execlp()  et  execvp()  dupliqueront  les  actions   de
       l’interpréteur  de commandes dans la recherche du fichier exécutable si
       le nom fourni ne contient pas de barre  oblique  « / ».  Le  chemin  de
       recherche  est spécifié dans la variable d’environnement PATH. Si cette
       variable   n’est   pas   définie,   le   chemin   par    défaut    sera
       « /bin:/usr/bin: ». De plus, certaines erreurs sont traitées de manière
       spécifique.

       Si l’accès au  fichier  est  refusé  (execve(2)  renvoie  EACCES),  ces
       fonctions  continueront à parcourir le reste du chemin de recherche. Si
       aucun fichier n’est trouvé, elles reviendront, et errno sera  défini  à
       EACCES.

       Si   l’en-tête  d’un  fichier  n’est  pas  reconnu  (execve(2)  renvoie
       ENOEXEC),  ces  fonctions  exécuteront  un  interpréteur  de  commandes
       (/bin/sh)  avec  le  chemin  d’accès  au  fichier  en  tant que premier
       argument.  Si  ceci  échoue,  aucune  recherche  supplémentaire   n’est
       effectuée.

VALEUR RENVOYÉE

       Si  l’une  des fonctions exec() revient, c’est qu’une erreur a eu lieu.
       La valeur de retour est -1, et errno contient le code d’erreur.

ERREURS

       Toutes ces fonctions peuvent échouer et  définir  errno  sur  n’importe
       quelle erreur décrite dans la fonction execve(2).

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Sur  certains  systèmes,  le chemin de recherche par défaut (employé si
       l’environnement  ne  contient  pas  la  variable  PATH)   contient   le
       répertoire  courant  à  la suite de /bin et /usr/bin, afin d’éviter les
       chevaux de Troie. Linux utilise encore le répertoire courant en premier
       dans ce chemin de recherche par défaut.

       Le  comportement  de  execlp() et execvp() lorsqu’une erreur se produit
       pendant l’exécution d’un programme est une pratique historique mais n’a
       traditionnellement  jamais  été documenté, ni spécifié dans le standard
       POSIX. Lorsque  ETXTBSY  est  rencontré,  BSD  (et  peut-être  d’autres
       systèmes)  endorment  le  processus appelant puis ré-itère l’opération.
       Linux considère cette situation comme  une  erreur  grave,  et  revient
       immédiatement.

       Habituellement,  les  fonctions  execlp() et execvp() ignoraient toutes
       les erreurs sauf celles décrites ci-dessus, ENOMEM et E2BIG. Désormais,
       elles  reviennent  à  l’appelant  si  une autre erreur que celles-ci se
       produit.

VOIR AUSSI

       sh(1), execve(2), fork(2), ptrace(2), fexecve(3), environ(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».