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 via le
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, spécifié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.
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 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.44 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> ».