Bash-Linux.com : Le SHELL pour les nuls

  Actuellement 46 lignes de commande disponibles
login as: root
root@213.186.33.18's password:
Last login: Sun Aug 1 7:39:52 2010 from 38.107.191.104
[root@bash-linux ~] # echo "Bienvenue sur Bash-Linux.com"_
 Manuel des commandes UNIX (man) Version française

Indiquez la fonction :

Man Execve en français

EXECVE(2) Manuel du programmeur Linux EXECVE(2)
 
NOM


execve - Executer un programme.
 
SYNOPSIS


#include int execve(const char *filename, char *const argv[], char *const envp[]);
 
DESCRIPTION


execve() execute le programme correspondant au fichier. Celui-ci doit etre un executable binaire ou bien un script commencant par une ligne du type "#! interpreteur [arg]". Dans ce dernier cas, l'interpreteur doit etre indique par un nom complet, avec son chemin d'acces, et qui sera invoque sous la forme interpreteur [arg] fichier. argv est un tableau de chaines d'arguments passees au nouveau pro- gramme. envp est un tableau de chaines, ayant par convention la forme cle=valeur, qui sont passees au nouveau programme comme environnement. argv ainsi que envp doivent se terminer par un pointeur NULL. Les argu- ments et l'environnement sont accessibles par le nouveau programme dans sa fonction principale, lorsqu'elle est definie comme int main (int argc, char * argv [], char * envp []). En cas de reussite, execve() ne revient pas a l'appelant, et les seg- ments de texte, de donnees, ainsi que la pile du processus appelant sont remplaces par ceux du programme charge. Si l'on effectuait un ptrace(2) sur le programme appelant, un signal SIGTRAP est envoye apres la reussite de execve(). Si le bit Set-UID est positionne sur le fichier du programme et si le processus appelant n'est pas trace par ptrace(2), l'UID effectif du processus appelant est modifie pour prendre celui du proprietaire du fichier. De meme, lorsque le bit Set-GID est positionne, le GID effec- tif est modifie pour correspondre a celui du groupe du fichier. L'UID effectif du processus est copie dans le Set-UID sauve ; de la meme maniere, le GID effectif est copie dans le Set-GID sauve. Ces copies ont lieu apres toute modification d'ID effectif a cause des bits de permissions Set-UID et Set-GID. Si l'executable est un fichier binaire a.out lie dynamiquement, et con- tenant des appels aux bibliotheques partagees, le linker dynamique de Linux ld.so(1) est appele avant l'execution, afin de charger les bib- liotheques partagees necessaires en memoire, et d'effectuer l'edition des liens de l'executable. Si l'executable est au format ELF lie dynamiquement, l'interpreteur indique dans le segment PT_INTERP sera invoque pour charger les biblio- theques partagees. Cet interpreteur est generalement /lib/ld-linux.so.1 pour les fichiers binaires lies avec la libc Linux version 5, ou /lib/ld-linux.so.2 pour ceux lies avec la GNU libc version 2. Tous les attributs d'un processus sont conserves pendant un execve(), a l'exeption des suivants : * Les descripteurs de fichier qui sont marques close-on-exec sont fermes (voir la description de FD_CLOEXEC dans fcntl(2)). * The set of pending signals is cleared (sigpending(2)). * L'ensemble des signaux en suspens est efface (sigpending(2)). * Les dispositions de tous les signaux qui ont ete captures sont reinitialisees afin d'etre ignorees. * Les piles specifiques de signaux ne sont pas conservees. (sigalt- stack(2)). * Les projections memoire ne sont pas conservees. (mmap(2)). * Les segments de memoire partagee System V attaches sont detaches. (shmat(2)). * Les regions de memoire partagee POSIX sont deprojetees. (shm_open(3)). * Les descripteurs de file de messages ouverts sont fermes (mq_overview(7)). * Les semaphores nommes POSIX ouverts sont fermes (sem_overview(7)). * Les temporisateurs POSIX ne sont pas conserves (timer_create(3)). * Les flux de repertoire ouverts sont fermes (opendir(3)). * Les verrous memoire ne sont pas conserves (mlock(2), mlockall(2)). * Les gestionnaires de sortie ne sont pas conserves (atexit(3), on_exit(3)). Les attributs de processus de la liste precedente sont tous specifies dans POSIX.1-2001. Les attributs de processus, specifiques a Linux, suivants ne sont pas conserves pendant un execve(): * L'attribut PR_SET_DUMPABLE de prctl(2) est positionne, a moins qu'un programme SUID ou SGID ait ete execute, auquel cas il est efface. * L'attribut PR_SET_KEEPCAPS de prctl(2) est efface. * Le signal de termimaison est reinitialise a SIGCHLD (voir clone(2)). Veuillez noter les points suivants : * Tous les threads autre que le thread appelant sont detruits lors d'un execve(). Les mutexes, les variables de condition et autres objets pthreads ne sont pas conserves. * L'equivalent de setlocale(LC_ALL, "C") est execute au demarrage du programme. * POSIX.1-2001 specifie que les dispositions des signaux qui sont soit ignores, soit definies a leur valeur par defaut, ne sont pas modifiees. POSIX.1-2001 specifie une exception : si SIGCHLD est ignore, une implementation peut laisser la disposition inchangee ou bien la reinitialiser a sa valeur par defaut ; Linux fait le pre- mier. * Les operations d'E/S asynchrones non executees sont annulees. (aio_read(3), aio_write(3)). * Pour la gestion des capacites lors d'un execve(2), voir capabili- ties(7).
 
VALEUR RENVOYEE


En cas de reussite, execve() ne revient pas, en cas d'echec il renvoie -1 et errno contient le code d'erreur.
 
ERREURS


E2BIG Le nombre total d'octets dans l'environnement (envp) et dans la liste d'arguments (argv) est trop grang EACCES La permission de parcours est refusee pour un des composants du chemin filename ou du nom d'un interpreteur de script. (Voir aussi path_resolution(2).) EACCES Le fichier n'est pas un fichier regulier. EACCES L'autorisation d'execution est refusee pour le fichier, ou un script, ou un interpreteur ELF. EACCES Le systeme de fichiers est monte avec l'option noexec. EFAULT L'argument fichier pointe en dehors de l'espace d'adressage accessible. EINVAL Un executable ELF a plusieurs segments PT_INTERP (indique plusieurs interpreteurs). EIO Une erreur d'entree-sortie de bas niveau s'est produite. EISDIR L'interpreteur ELF cite est un repertoire.
 
ELIBBAD


L'interpreteur ELF mentionne n'est pas dans un format connu. ELOOP Le chemin d'acces au fichier contient une reference circulaire (a travers un lien symbolique) EMFILE Le nombre maximal de fichiers ouverts par processus est atteint.
 
ENAMETOOLONG


La chaine de caracteres fichier est trop longue. ENFILE La limite du nombre total de fichiers ouverts sur le systeme est atteinte. ENOENT Le fichier ou un script ou un interpreteur ELF n'existe pas, ou une bibliotheque partagee necessaire pour le fichier ou l'inter- preteur n'est pas disponible.
 
ENOEXEC


Le fichier executable n'est pas dans le bon format, ou est des- tine a une autre architecture. ENOMEM Pas assez de memoire pour le noyau.
 
ENOTDIR


Un element du chemin d'acces n'est pas un repertoire. EPERM Le systeme de fichiers est monte avec l'attribut nosuid et le fichier a un bit Set-UID ou Set-GID positionne. EPERM Le processus est suivi avec ptrace(2), l'utilisateur n'est pas le super-utilisateur, et le fichier a un bit Set-UID ou Set-GID active.
 
ETXTBSY


Le fichier executable a ete ouvert en ecriture par un ou plusieurs processus.
 
CONFORMITE


SVr4, BSD 4.3, POSIX.1-2001. POSIX.1-2001 ne documente pas le com- portement avec #! mais est neanmoins compatible.
 
NOTES


Les processus Set-UID et Set-GID ne peuvent pas etre suivis par ptrace(). Linux ignore les bits Set-UID et Set-GID sur les scripts. Le resultat d'un montage de systeme de fichiers avec l'attribut nosuid peut varier suivant les versions de noyau : certaines refuseront l'exe- cution des fichiers SUID/SGID lorsque cela donnerait a l'appelant des privileges qu'il n'a pas (et renverront l'erreur EPERM), d'autres ignoreront simplement les bits SUID/SGID mais accepteront d'effectuer l'appel execve(). La premiere ligne d'un shell script executable (#!) a une longueur max- imale de 127 caracteres.
 
HISTORIQUE


Avec Unix V6, la liste des arguments d'un appel exec() se terminait par 0, alors que la liste des arguments de main se terminait par -1. Aussi, cette liste d'arguments n'etait pas utilisable directement dans un appel exec() supplementaire.
 
VOIR AUSSI


chmod(2), fork(2), path_resolution(2), ptrace(2), execl(3), fexecve(3), environ(7), ld.so(8).
 
TRADUCTION


Ce document est une traduction realisee par Christophe Blaess le 9 octobre 1996 et mise a jour par Alain Portal le 19 juin 2007. L'equipe de traduction a fait le maximum pour realiser une adaptation francaise de qualite. La version anglaise la plus a jour de ce document est toujours consultable via la commande : LANG=C man 2 execve . N'hesitez pas a signaler a l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. Linux 2.6.17 4 septembre 2006 EXECVE(2)


 Dernières recherches
Man  en anglais Man execve en anglaisMan  en français Man execve en français
Man  en anglais Man shmget en anglaisMan  en français Man shmget en français
Man  en anglais Man strtod en anglaisMan  en français Man strtod en français
Man  en anglais Man sysctl en anglaisMan  en français Man sysctl en français
Man  en anglais Man head en anglaisMan  en français Man head en français
Man  en anglais Man fcvt en anglaisMan  en français Man fcvt en français
Man  en anglais Man ungetc en anglaisMan  en français Man ungetc en français
Man  en anglais Man uname en anglaisMan  en français Man uname en français
Man  en anglais Man getconf en anglaisMan  en français Man getconf en français
Man  en anglais Man msgop en anglaisMan  en français Man msgop en français
Man  en anglais Man env en anglaisMan  en français Man env en français
Man  en anglais Man split en anglaisMan  en français Man split en français
Man  en anglais Man abort en anglaisMan  en français Man abort en français
Man  en anglais Man qsort en anglaisMan  en français Man qsort en français
Man  en anglais Man setlogmask en anglaisMan  en français Man setlogmask en français

 Recherche

Dans ce moteur de recherche, vous pouvez taper directement votre besoin, en une phrase normale, humaine.
Exemple : vous cherchez comment remplacer un mot par un autre dans tous les fichiers d'un certain dossier. Vous pouvez écrire "Comment remplacer un mot par un autre dans tous les fichiers d'un dossier". Le moteur vous ramenera les résultats en fonction de leur pertinence.
Vous pouvez bien sûr ne chercher qu'un seul mot-clé, par exemple "find".
 Toutes les lignes de code
Par popularité
Par fonction
Recherche avancée
 Les logiciels SHELL/SSH
Putty
Astuces Bash
Faire du SHELL avec PHP!
 La doc officielle
Les man Linux en français
Les man Linux en anglais
 Proposer vos bash
Partagez vos lignes!
 Les requêtes
Déposer une requête
Voir/répondre à une requête
 Quelques sites interessants
Bons sites pour apprendre
 Rechercher