Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

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)