dwww Home | Manual pages | Find package

exec(3)                    Library Functions Manual                    exec(3)

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 pro-
       gramme à exécuter. La liste des arguments doit se terminer par un poin-
       teur  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 termi-
       ner 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'en-
       vironnement PATH. Si cette variable n'est pas définie, la liste de che-
       mins par défaut correspondra à une liste contenant les répertoires ren-
       voyé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  ren-
       voyant 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  com-
       mandes  (/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éci-
       fie le programme à exécuter.

VALEUR RENVOYÉE
       Les  fonctions  exec()  ne  s'interrompent que si une erreur s'est pro-
       duite. 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).

VERSIONS
       La fonction execvpe() a été introduite dans la glibc 2.11.

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 │
       └─────────────────────────────────┴──────────────────────┴─────────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

       La fonction execvpe() est une extension GNU.

NOTES
       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 an-
       ti-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éper-
       toire courant se situe en tête de liste. Cependant, suite à une réécri-
       ture 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  sys-
       tè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.

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-si-
       gnal-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),  sys-
       tem(3), environ(7)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David  Prévot  <david@tilapin.org>  et  Lucien  Gentis  <lu-
       cien.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⟩.

Pages du manuel de Linux 6.03   7 janvier 2023                         exec(3)

Generated by dwww version 1.15 on Sat Jun 29 00:41:11 CEST 2024.