execlp

EXEC(3)                    Manuel du programmeur Linux                   EXEC(3)



NOM
       execl, execlp, execle, execv, execvp, execvpe - 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[]);
       int execvpe(const char *file, char *const argv[],
        char *const envp[]);

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

       execvpe() : _GNU_SOURCE

DESCRIPTION
       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) (consultez 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(), execvp() et execvpe() 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.

       Les fonctions execle() et execvpe() permettent à l'appelant d'indiquer
       l'environnement du processus à exécuter à l’aide du paramètre envp. Ce
       paramètre 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 du processus
       appelant.

   Sémantique particulière pour execlp() et execvp()
       Les fonctions execlp(), execvp() et execvpe() 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, le chemin par défaut sera le répertoire actuel, suivi de la
       liste des répertoires renvoyée par confstr(_CS_PATH) (cet appel à
       confstr(3) renvoie habituellement « /bin:/usr/bin: »).

       Si le nom du fichier indiqué 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 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
       Une sortie des fonctions exec() n'intervient que si une erreur s'est
       produite. La valeur de retour 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.

CONFORMITÉ
       POSIX.1-2001, POSIX.1-2008.

       La fonction execvpe() est une extension GNU.

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 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. 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.65 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
       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone
       au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain
       Portal <http://manpagesfr.free.fr/> (2003-2006).  Florentin Duneau et
       l'équipe francophone de traduction de Debian (2006-2009).

       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> ».



GNU                             25 septembre 2010                        EXEC(3)