Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       fexecve - Exécuter un programme indiqué par un descripteur de fichier

SYNOPSIS

       #include <unistd.h>

       int fexecve(int fd, char *const argv[], char *const envp[]);

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

       fexecve() :
           Depuis la glibc 2.10 :
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           Avant la glibc 2.10 :
               _GNU_SOURCE

DESCRIPTION

       fexecve() effectue la même tâche que execve(2), excepté que  le  fichier  à  exécuter  est
       indiqué  a  l’aide  d’un descripteur de fichier, fd au lieu d'un chemin. Le descripteur de
       fichier fd doit être ouvert en lecture seule, et l'appelant  doit  avoir  les  permissions
       nécessaires pour exécuter le fichier lié au descripteur de fichier.

VALEUR RENVOYÉE

       En  cas de réussite, la fonction fexecve() ne revient jamais. En cas d'erreur, la fonction
       renvoie -1 et errno est définie.

ERREURS

       Les erreurs sont les mêmes que pour execve(2), avec en plus :

       EINVAL fd n'est pas un descripteur de fichier valable, ou argv est NULL, ou envp est NULL.

       ENOSYS Impossible d'accéder au système de fichiers /proc.

VERSIONS

       fexecve() est disponible depuis la glibc 2.3.2.

CONFORMITÉ

       POSIX.1-2008. Cette fonction n'est pas spécifiée dans POSIX.1-2001 et n'est  que  rarement
       disponible sur d'autres systèmes. Cette fonction est spécifiée dans POSIX.1-2008.

NOTES

       Sous Linux, fexecve() est implémentée avec le système de fichiers proc(5), /proc doit donc
       être monté et disponible lors des appels à fexecve().

       Si fd est un descripteur de fichier qui réfère un script et a été marqué  avec  l'attribut
       « close-on-exec »  (voir  FD_CLOEXEC  dans  fcntl(2)),  fexecve()  échouera  à exécuter le
       script, puisque qu'au moment où l'interpréteur essaie d'accéder au fichier du script, fd a
       déjà été fermé.

       L’idée  derrière  fexecve()  est  de permettre à l’appelant de vérifier (avec une somme de
       contrôle) le contenu d’un exécutable avant de  l’exécuter.  Juste  ouvrir  le  fichier  et
       calculer  la  somme  de  contrôle  du  contenu avant de faire un execve() ne suffirait pas
       puisque, entre les deux étapes, le nom du fichier, ou un préfixe de répertoire dans le nom
       de  chemin,  pourrait  avoir  été  modifié  (par  exemple  en modifiant la cible d’un lien
       symbolique). fexecve() n’atténue pas le problème que le contenu d’un fichier pourrait être
       modifié  entre  le  calcul  de  la somme de contrôle et l’appel à fexecve(). Pour cela, la
       solution est de s’assurer que les permissions sur le fichier  l’empêchent  d’être  modifié
       par un utilisateur malveillant.

VOIR AUSSI

       execve(2)

COLOPHON

       Cette  page  fait partie de la publication 3.65 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> ».