Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
EXEC
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- FICHIERS
- ERREURS
- VOIR AUSSI
- COMPATIBILITÉ
- CONFORMITÉ À
- TRADUCTION
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[]);
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 de l'appel système execve(2). (Voyez la page
de manuel de execve() pour des informations détaillées sur le
remplacement 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.
Certaines de ces fonctions ont une sémantique spécifique.
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() 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() renvoie
ENOEXEC), ces fonctions exécuteront un interpréteur de commandes 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.
FICHIERS
/bin/sh
ERREURS
Toutes ces fonctions peuvent échouer et définir errno sur n'importe
quelle erreur décrite dans la fonction execve(2).
VOIR AUSSI
sh(1), execve(2), fork(2), ptrace(2), fexecve(3),
environ(7)
COMPATIBILITÉ
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 l'erreur ETXTBSY se déclenche, 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.
CONFORMITÉ À
POSIX.1-2001.
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|