Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

       extern char **environ;

       int execl(const char *chemin, const char *arg, ...
       /*, (char *) NULL */);
       int execlp(const char *fichier, const char *arg, ...
       /*, (char *) NULL */);
       int execle(const char *chemin, const char *arg, ...
                       /*, (char *) NULL, char *const envp[] */);
       int execv(const char *chemin, char *const argv[]);
       int execvp(const char *fichier, char *const argv[]);
       int execvpe(const char *fichier, char *const argv[], char *const envp[]);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       execvpe():
           _GNU_SOURCE

DESCRIPTION

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

       Le premier argument de toutes ces fonctions est le nom du fichier à exécuter.

       Les  fonctions peuvent être regroupées en se basant sur les lettres qui suivent le préfixe
       "exec".

   l - execl(), execlp(), execle()
       Les arguments const char *arg et les points de suspension qui  suivent  peuvent  être  vus
       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 de code 0 qui  représentent  la
       liste  des  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.

       A la différence des fonctions 'l', les fonctions  'v'  (voir  ci-dessous)  spécifient  les
       arguments  de  ligne  de  commande  du  programme à exécuter sous la forme d'un tableau de
       pointeurs.

   v - execv(), execvp(), execvpe()
       L'argument char *const argv[] est un tableau de pointeurs sur des  chaînes  de  caractères
       terminées par un caractère de code 0 et représente la liste des arguments disponibles pour
       le nouveau programme . 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.

   e - execle(), execvpe()
       L'environnement de l'image du nouveau processus est spécifié à l'aide de l'argument  envp.
       Ce  dernier  est  un  tableau de pointeurs sur des chaînes de caractères terminées par des
       caractères de code 0 et doit se terminer par un pointeur NULL.

       Toutes les autres fonctions exec()  (qui  ne  possèdent  pas  le  suffixe  'e')  extraient
       l'environnement  pour l'image du nouveau processus depuis la variable externe environ dans
       le processus appelant.

   p - execlp(), execvp(), execvpe()
       Ces fonctions 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 fichier est
       recherché dans la liste de répertoires  séparés  par  des  deux-points  indiquée  dans  la
       variable  d'environnement  PATH.  Si cette variable n'est pas définie, la liste de chemins
       par  défaut  correspondra  à  une   liste   contenant   les   répertoires   renvoyés   par
       confstr(_CS_PATH) (qui renvoie en général la valeur "/bin:/usr/bin"), et éventuellement le
       répertoire courant ; voir NOTES pour plus de détails.

       execvpe() recherche le programme en utilisant la valeur  de  PATH  de  l'environnement  de
       l'appelant, et non celle issue de l'argument envp.

       Si  le  nom  du  fichier  spécifié  inclut  une barre oblique, alors PATH est ignoré et le
       fichier dont le chemin est fourni est exécuté.

       De plus, certaines erreurs sont traitées de manière spécifique.

       Si l'accès au fichier  est  refusé  (execve(2)  renvoie  alors  une  erreur  EACCES),  ces
       fonctions continueront à parcourir le reste du chemin de recherche. Si aucun fichier n'est
       trouvé, elles se termineront en renvoyant errno défini à EACCES.

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

       Toutes les autres fonctions exec() (qui ne comportent pas le suffixe 'p') ont pour premier
       argument un chemin (relatif ou absolu) qui spécifie le programme à exécuter.

VALEUR RENVOYÉE

       Les fonctions exec() ne s'interrompent  que  si  une  erreur  s'est  produite.  La  valeur
       renvoyée est -1, et errno contient le code d'erreur.

ERREURS

       Toutes  ces  fonctions  peuvent échouer et définir errno à n'importe quelle erreur décrite
       dans execve(2).

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────┬──────────────────────┬─────────────┐
       │InterfaceAttributValeur      │
       ├────────────────────────────────────────────────────┼──────────────────────┼─────────────┤
       │execl(), execle(), execv()                          │ Sécurité des threads │ MT-Safe     │
       ├────────────────────────────────────────────────────┼──────────────────────┼─────────────┤
       │execlp(), execvp(), execvpe()                       │ Sécurité des threads │ MT-Safe env │
       └────────────────────────────────────────────────────┴──────────────────────┴─────────────┘

VERSIONS

       Le chemin de recherche par défaut (utilisé lorsque  l'environnement  ne  contient  pas  la
       variable  PATH)  varie  en  fonction  du  système  utilisé. Il contient en général /bin et
       /usr/bin (dans cet ordre) et parfois aussi le répertoire courant. Sur certains systèmes et
       à  titre  de  mesure  anti-cheval de Troie, le répertoire courant est inclus après /bin et
       /usr/bin. L'implémentation de la glibc quant à elle, a longtemps  conservé  le  chemin  de
       recherche  par  défaut  traditionnel  où  le répertoire courant se situe en tête de liste.
       Cependant, suite à une réécriture du code lors du développement de la version 2.24  de  la
       glibc, le répertoire courant a été proprement éjecté du chemin de recherche. Ce changement
       de comportement accidentel étant considéré cependant comme relativement bénéfique, il  n'y
       aura pas de retour en arrière.

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

       Traditionnellement, les fonctions execlp() et execvp() ignoraient toutes les erreurs  sauf
       celles  décrites ci-dessus, ENOMEM et E2BIG à la survenue desquelles elles se terminaient.
       Désormais, elles se terminent si une autre erreur que celles-ci se produit.

STANDARDS

       environ
       execl()
       execlp()
       execle()
       execv()
       execvp()
              POSIX.1-2008.

       execvpe()
              GNU.

HISTORIQUE

       environ
       execl()
       execlp()
       execle()
       execv()
       execvp()
              POSIX.1-2001.

       execvpe()
              glibc 2.11.

BOGUES

       Dans les versions de  la  glibc  antérieures  à  2.24,  execl()  et  execle()  utilisaient
       realloc(3)   en  interne  et  n'étaient  donc  pas  async-signal-safe,  en  violation  des
       spécifications de POSIX.1. La version 2.24 de la glibc corrige ce problème.

   Détails spécifiques à l'architecture
       Sous sparc et sparc64, execv() est fournie en tant qu'appel système par le noyau (avec  le
       prototype  décrit  ci-dessus) à titre de compatibilité avec SunOS. Sous ces architectures,
       la fonction qui sert de frontal à execv() n'utilise pas cette fonction.

VOIR AUSSI

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

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot   <david@tilapin.org>  et  Lucien  Gentis
       <lucien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.