Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
system - Executer une commande shell
SYNOPSIS
#include <stdlib.h>
int system(const char *command);
DESCRIPTION
La fonction system() execute la commande indiquee dans command en
appelant /bin/sh -c command, et revient apres l'execution complete de
la commande. Durant cette execution, le signal SIGCHLD est bloque, et
les signaux SIGINT et SIGQUIT sont ignores.
VALEUR RENVOY'EE
La valeur renvoyee est -1 en cas d'erreur (par exemple echec de
fork(2)) ou le code de retour de la commande en cas de succes. Ce
dernier code est dans le format indique dans wait(2). Ainsi, le retour
de la commande sera WEXITSTATUS(status). Dans le cas ou /bin/sh ne peut
pas etre execute, le code de retour sera identique a celui d'une
commande effectuant un exit(127).
Si la valeur de command est NULL, system() renvoie une valeur non nulle
si le shell est accessible, et zero sinon.
system() n'affecte pas le statut d'attente des autres processus fils.
CONFORMIT'E
C89, C99, POSIX.1-2001.
NOTES
Si la macro de test de fonctionnalite _XOPEN_SOURCE est definie (avant
d'inclure tout fichier d'en-tete), les macros decrites dans wait(2)
(WEXITSTATUS(), etc.) sont disponibles en incluant <stdlib.h>.
Comme mentionne plus haut, system() ignore SIGINT et SIGQUIT. Un
programme qui l'appelle en boucle risque de ne pas pouvoir etre
interrompu, a moins qu'il ne verifie le code de retour du fils, par
exemple
while (qqchose) {
int ret = system("foo");
if (WIFSIGNALED(ret) &&
(WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))
break;
}
N'utilisez jamais system() dans un programme avec les privileges
Set-UID ou Set-GID. Des variables d'environnement avec des valeurs
etranges peuvent etre utilisees pour corrompre l'integrite du systeme.
Utilisez les fonctions de la famille exec(3) a la place, mais pas
execlp(3) ni execvp(3). system() ne fonctionnera pas correctement avec
les programmes ayant des privileges fournis par les bits Set-UID ou
Set-GID sur les systemes ou /bin/sh est bash version 2, car celui-ci
rejette les privileges au demarrage (Debian utilise une version
modifiee de bash ou ce comportement est abandonne si on l'invoque sous
le nom sh).
Avec les versions de la glibc anterieures a 2.1.3, la verification de
la disponibilite de /bin/sh n'etait pas faite lorsque command etait
NULL. Il etait toujours suppose etre disponible, et system() renvoyait
toujours 1 dans ce cas. Depuis glibc 2.1.3, cette verification est
effectuee, car, meme si POSIX.1-2001 impose aux implementations
conformes de fournir un shell, ce shell peut ne pas etre operationnel
si le programme appelant a auparavant appele chroot(2) (ce qui n'est
pas specifie dans POSIX.1-2001).
Il est possible qu'une commande shell renvoie 127, ainsi le code de
retour n'est pas une indication sure de l'echec de execve(2).
VOIR AUSSI
sh(1), signal(2), wait(2), exec(3)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Nicolas
Francois et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
10 septembre 2010 SYSTEM(3)