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


NOM
       execl,  execlp,  execle,  execv, execvp - Exécuter un pro­
       gramme.

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  de fonctions exec remplace l'image mémoire du
       processus en cours par un nouveau  processus.   Les  fonc­
       tions  décrites  dans  cette  page  sont  en  réalite  des
       frontaux pour l'appel système execve(2).  (Voir la page de
       execve  pour  des informations détaillées sur le remplace­
       ment 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 sus­
       pension des fonctions execl,  execlp,  et  execle  peuvent
       être  vues  comme des 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  pro­
       gramme  à  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.

       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 pointeur doit se ter­
       miner 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  NULL  de
       la  table  par  un paramètre supplémentaire.  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



BSD                      19 Juillet 1997                        1





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


       variable externe environ.

       Certaines de ces fonctions ont une sémantique  spécifique.

       Les fonctions execlp et execvp agiront comme le shell dans
       la recherche du fichier exécutable si  le  nom  fourni  ne
       contient  pas  de  slash  (/).  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  la  permission  d'accès au fichier est refusée (execve
       renvoie EACCES), ces fonctions continueront à parcourir le
       reste  du  chemin  de  recherche.  Si  aucun fichier n'est
       trouvé, elle reviendront,  et  errno  contiendra  le  code
       d'erreur EACCES.

       Si  l'en-tête  d'un fichier n'est pas reconnu (execve ren­
       voie ENOEXEC), ces fonctions exécuteront un shell 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   quelconque   des  fonctions  exec  revient  à
       l'appelant, 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 positionner errno
       sur n'importe  quelle  erreur  décrite  dans  la  fonction
       execve(2).

VOIR AUSSI
       sh(1), execve(2), fork(2), environ(5), ptrace(2)

COMPATIBILITÉ
       Sur  certains  systèmes, la valeur par défaut de PATH con­
       tient  le  répertoire  courant  à  la  suite  de  /bin  et
       /usr/bin, afin d'éviter les chevaux de Troie. Dans la libc
       5.4.7, Linux utilise encore le répertoire courant en  pre­
       mier dans la valeur par défaut de PATH.

       Le  comportement  de execlp et execvp lorsqu'une erreur se
       produit est une pratique historique  mais  n'a  tradition­
       nellement  jamais été documenté, ni spécifié dans le stan­
       dard POSIX.

       Lorsque l'erreur ETXTBSY se déclenche (fichier  exécutable
       ouvert  en  écriture  par  un  autre  processus),  BSD (et



BSD                      19 Juillet 1997                        2





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


       peut-être  d'autres  systèmes)  endorment   le   processus
       appelant puis réiterent l'opération. Linux considère cette
       situation comme une erreur grave,  et  revient  immédiate­
       ment.

       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É
       Execl, execv, execle, execlp et execvp  sont  conformes  à
       IEEE Std1003.1-88 (``POSIX.1'').


TRADUCTION
       Christophe Blaess, 1997.








































BSD                      19 Juillet 1997                        3