Man page - execle(3)

Packages contains this manual

Available languages:

en fr pl ja de

Manual

exec

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
l - execl(), execlp(), execle()
v - execv(), execvp(), execvpe()
e - execle(), execvpe()
p - execlp(), execvp(), execvpe()
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
BOGUES
DĂ©tails spĂ©cifiques Ă  l’architecture
VOIR AUSSI
TRADUCTION

NOM

execl, execlp, execle, execv, execvp, execvpe - Exécuter un fichier

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <unistd.h>

extern char **environ;

int execl(const char * chemin , const char * arg , ...
/*, (char *) NULL */);
int execlp(const char *
fichier , const char * arg , ...
/*, (char *) NULL */);
int execle(const char *
chemin , const char * arg , ...
/*, (char *) NULL, char *const
envp [] */);
int execv(const char *
chemin , char *const argv []);
int execvp(const char *
fichier , char *const argv []);
int execvpe(const char *
fichier , char *const argv [], char *const envp []);

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

execvpe ():
_GNU_SOURCE

DESCRIPTION

La famille des fonctions exec () remplace l’image du processus en cours par l’image d’un nouveau processus. Les fonctions dĂ©crites dans cette page de manuel 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).

Le premier argument de toutes ces fonctions est le nom du fichier à exécuter.

Les fonctions peuvent ĂȘtre regroupĂ©es en se basant sur les lettres qui suivent le prĂ©fixe "exec".

l - execl(), execlp(), execle()

Les arguments const char *arg et les points de suspension qui suivent peuvent ĂȘtre vus 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 de code 0 qui reprĂ©sentent la liste des 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 .

A la diffĂ©rence des fonctions ’l’, les fonctions ’v’ (voir ci-dessous) spĂ©cifient les arguments de ligne de commande du programme Ă  exĂ©cuter sous la forme d’un tableau de pointeurs.

v - execv(), execvp(), execvpe()

L’argument char *const argv[] est un tableau de pointeurs sur des chaĂźnes de caractĂšres terminĂ©es par un caractĂšre de code 0 et reprĂ©sente la liste des arguments disponibles pour le nouveau programme . 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.

e - execle(), execvpe()

L’environnement de l’image du nouveau processus est spĂ©cifiĂ© Ă  l’aide de l’argument envp . Ce dernier est un tableau de pointeurs sur des chaĂźnes de caractĂšres terminĂ©es par des caractĂšres de code 0 et doit se terminer par un pointeur NULL.

Toutes les autres fonctions exec () (qui ne possùdent pas le suffixe ’e’) extraient l’environnement pour l’image du nouveau processus depuis la variable externe environ dans le processus appelant.

p - execlp(), execvp(), execvpe()

Ces fonctions 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, la liste de chemins par dĂ©faut correspondra Ă  une liste contenant les rĂ©pertoires renvoyĂ©s par confstr(_CS_PATH) (qui renvoie en gĂ©nĂ©ral la valeur "/bin:/usr/bin"), et Ă©ventuellement le rĂ©pertoire courant ; voir VERSIONS pour plus de dĂ©tails.

execvpe () recherche le programme en utilisant la valeur de PATH de l’environnement de l’appelant, et non celle issue de l’argument envp .

Si le nom du fichier spécifié 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 alors une erreur EACCES ), ces fonctions continueront Ă  parcourir le reste du chemin de recherche. Si aucun fichier n’est trouvĂ©, elles se termineront en renvoyant errno dĂ©fini Ă  EACCES .

Si l’en-tĂȘte d’un fichier n’est pas reconnu ( execve (2) renvoie alors une erreur ENOEXEC ), ces fonctions exĂ©cuteront l’interprĂ©teur de commandes ( /bin/sh ) avec le chemin d’accĂšs au fichier en tant que premier argument. Si cette tentative Ă©choue, aucune recherche supplĂ©mentaire ne sera effectuĂ©e.

Toutes les autres fonctions exec () (qui ne comportent pas le suffixe ’p’) ont pour premier argument un chemin (relatif ou absolu) qui spĂ©cifie le programme Ă  exĂ©cuter.

VALEUR RENVOYÉE

Les fonctions exec () ne s’interrompent que si une erreur s’est produite. La valeur renvoyĂ©e 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).

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3876282-1.png

VERSIONS

Le chemin de recherche par dĂ©faut (utilisĂ© lorsque l’environnement ne contient pas la variable PATH ) varie en fonction du systĂšme utilisĂ©. Il contient en gĂ©nĂ©ral /bin et /usr/bin (dans cet ordre) et parfois aussi le rĂ©pertoire courant. Sur certains systĂšmes et Ă  titre de mesure anti-cheval de Troie, le rĂ©pertoire courant est inclus aprĂšs /bin et /usr/bin . L’implĂ©mentation de la glibc quant Ă  elle, a longtemps conservĂ© le chemin de recherche par dĂ©faut traditionnel oĂč le rĂ©pertoire courant se situe en tĂȘte de liste. Cependant, suite Ă  une réécriture du code lors du dĂ©veloppement de la version 2.24 de la glibc, le rĂ©pertoire courant a Ă©tĂ© proprement Ă©jectĂ© du chemin de recherche. Ce changement de comportement accidentel Ă©tant considĂ©rĂ© cependant comme relativement bĂ©nĂ©fique, il n’y aura pas de retour en arriĂšre.

Le comportement de execlp () et execvp () lorsqu’une erreur se produit pendant l’exĂ©cution d’un programme est un comportement 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. Sous Linux, cette situation est considĂ©rĂ©e comme une erreur grave, et la commande se termine immĂ©diatement.

Traditionnellement, les fonctions execlp () et execvp () ignoraient toutes les erreurs sauf celles décrites ci-dessus, ENOMEM et E2BIG à la survenue desquelles elles se terminaient. Désormais, elles se terminent si une autre erreur que celles-ci se produit.

STANDARDS

environ
execl
()
execlp
()
execle
()
execv
()
execvp
()

POSIX.1-2008.

execvpe ()

GNU.

HISTORIQUE

environ
execl
()
execlp
()
execle
()
execv
()
execvp
()

POSIX.1-2001.

execvpe ()

glibc 2.11.

BOGUES

Dans les versions de la glibc antĂ©rieures Ă  2.24, execl () et execle () utilisaient realloc (3) en interne et n’étaient donc pas async-signal-safe, en violation des spĂ©cifications de POSIX.1. La version 2.24 de la glibc corrige ce problĂšme.

DĂ©tails spĂ©cifiques Ă  l’architecture

Sous sparc et sparc64, execv () est fournie en tant qu’appel systĂšme par le noyau (avec le prototype dĂ©crit ci-dessus) Ă  titre de compatibilitĂ© avec SunOS. Sous ces architectures, la fonction qui sert de frontal Ă  execv () n’utilise pas cette fonction.

VOIR AUSSI

sh (1), execve (2), execveat (2), fork (2), ptrace (2), fexecve (3), system (3), environ (7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Lucien Gentis <lucien.gentis@waika9.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .