EXEC(3)

NOM
execl, execlp, execle, execv, execvp - Executer un programme.

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 memoire du processus en cours par un nouveau processus. Les fonctions decrites dans cette page sont en realite des frontaux pour l'appel systeme execve(2). (Voir la page de execve pour des informations detaillees sur le remplacement du processus en cours.)

L'argument initial de toutes ces fonctions est le chemin d'acces du fichier a executer.

Les arguments const char *arg ainsi que les points de suspension des fonctions execl, execlp, et execle peuvent etre vues comme des arg0, arg1, ..., argn. Ensemble ils decrivent une liste d'un ou plusieurs pointeurs sur des chaines de caracteres terminees par des caracteres nuls, qui constituent les arguments disponibles pour le programme a executer. Par convention le premier argument doit pointer sur le nom du fichier associe au programme a executer. La liste des arguments doit se terminer par un pointeur NULL.

Les fonctions execv et execvp utilisent un tableau de pointeurs sur des chaines de caracteres terminees par des caracteres nuls, qui constituent les arguments disponibles pour le programme a executer. Par convention le premier argument doit pointer sur le nom du fichier associe au programme a executer. Le tableau de pointeur doit se terminer par un pointeur NULL.

La fonction execle peut egalement indiquer l'environnement du processus a executer en faisant suivre le pointeur NULL qui termine la liste d'arguments, ou le pointeur NULL de la table par un parametre supplementaire. Ce parametre est un tableau de pointeurs sur des chaines de caracteres terminees par des caracteres nuls, qui doit se terminer par un pointeur NULL. Les autres fonctions fournissent au nouveau processus l'environnement constitue par la variable externe environ.

Certaines de ces fonctions ont une semantique specifique.

Les fonctions execlp et execvp agiront comme le shell dans la recherche du fichier executable si le nom fourni ne contient pas de slash (/). Le chemin de recherche est specifie dans la variable d'environnement PATH. Si cette variable n'est pas definie, le chemin par defaut sera ``/bin:/usr/bin:''. De plus certaines erreurs sont traitees de maniere specifique.

Si la permission d'acces au fichier est refusee (execve renvoie EACCES), ces fonctions continueront a parcourir le reste du chemin de recherche. Si aucun fichier n'est trouve, elle retourneront, et errno contiendra le code d'erreur EACCES.

Si l'en-tete d'un fichier n'est pas reconnu (execve renvoie ENOEXEC), ces fonctions executeront un shell avec le chemin d'acces au fichier en tant que premier argument. Si ceci echoue, aucune recherche supplementaire n'est effectuee.

VALEUR RENVOYEE
Si l'une quelconque des fonctions exec revient a 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 echouer et positionner errno sur n'importe quelle erreur decrite dans la fonction execve(2).

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

COMPATIBILITE
Sur certains systemes, la valeur par defaut de PATH contient le repertoire courant a la suite de /bin et /usr/bin, afin d'eviter les chevaux de Troie. Dans la libc 5.4.7, Linux utilise encore le repertoire courant en premier dans la valeur par defaut de PATH.

Le comportement de execlp et execvp lorsqu'une erreur se produit est une pratique historique mais n'a traditionnellement jamais ete documente, ni specifie dans le standard POSIX. Lorsque l'erreur ETXTBSY se declenche (fichier executable ouvert en ecriture par un autre processus), BSD (et peut-etre d'autres systemes) endorment le processus appelant puis reiterent l'operation. Linux considere cette situation comme une erreur grave, et revient immediatement.

Habituellement, les fonctions execlp et execvp ignoraient toutes les erreurs sauf celles decrites ci-dessus, ENOMEM et E2BIG. Desormais, elles reviennent a l'appelant si une autre erreur que celles-ci se produit.

CONFORME A
Execl, execv, execle, execlp et execvp sont conformes a IEEE Std1003.1-88 (``POSIX.1'').