Available in

(3) (3)/de (3)/es (3)/fr (3)/ja (3)/ko (3)/pt (3)/tr (3c) (3posix) (3w) (4)

TOC

SYSTEM(3)                 Manuel du programmeur Linux                SYSTEM(3)



NOM

       system - Excuter une commande shell

SYNOPSIS

       #include <stdlib.h>

       int system(const char *commande);

DESCRIPTION

       La  fonction  system()  excute  la  commande  indique  dans commande en
       appelant /bin/sh -c commande, et revient aprs l'excution complte de  la
       commande.  Durant  cette  excution, le signal SIGCHLD est bloqu, et les
       signaux SIGINT et SIGQUIT sont ignors.

VALEUR RENVOYE

       La valeur renvoye est -1 en cas d'erreur (par exemple chec de  fork(2))
       ou  le  code  de retour de la commande en cas de succs. Ce dernier code
       est dans le format indiqu dans wait(2). Ainsi, le retour de la commande
       sera  WEXITSTATUS(status). Dans le cas o /bin/sh ne peut pas tre excut,
       le code de retour sera identique  celui d'une  commande  effectuant  un
       exit(127).

       Si  la  valeur  de  commande  est NULL, system() renvoie une valeur non
       nulle si le shell est accessible, et zro sinon.

       system() n'affecte pas le statut d'attente des autres processus fils.

CONFORMIT

       C89, C99, POSIX.1-2001.

NOTES

       Si la macro de test de  fonctionnalit  _XOPEN_SOURCE  est  dfinie,  les
       macros  dcrites  dans wait(2) (WEXITSTATUS(), etc.) sont disponibles en
       incluant <stdlib.h>.

       Comme mentionn plus haut, system() ignore SIGINT et  SIGQUIT.  Un  pro-
       gramme qui l'appelle en boucle risque de ne pas pouvoir tre interrompu,
        moins qu'il ne vrifie 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 privilges Set-UID
       ou Set-GID. Des variables d'environnement avec des valeurs tranges peu-
       vent tre utilises pour corrompre  l'intgrit  du  systme.  Utilisez  les
       fonctions  de  la  famille  exec(3)   la  place,  mais pas execlp(3) ni
       execvp(3). system() ne fonctionnera  pas  correctement  avec  les  pro-
       grammes ayant des privilges fournis par les bits Set-UID ou Set-GID sur
       les systmes o /bin/sh est bash version  2,  car  celui-ci  rejette  les
       privilges  au dmarrage (Debian utilise une version modifie de bash o ce
       comportement est abandonn si on l'invoque sous le nom sh).

       Avec les versions de la glibc antrieures  2.1.3, la vrification  de  la
       disponibilit  de /bin/sh n'tait pas faite lorsque command tait NULL. Il
       tait toujours suppos tre disponible, et system() renvoyait  toujours  1
       dans  ce  cas. Depuis glibc 2.1.3, cette vrification est effectue, car,
       mme si POSIX.1-2001 impose aux implmentations conformes de  fournir  un
       shell,  ce shell peut ne pas tre oprationnel si le programme appelant a
       auparavant appel chroot(2) (ce qui n'est pas spcifi dans POSIX.1-2001).

       Il  est  possible  qu'une  commande shell renvoie 127, ainsi le code de
       retour n'est pas une indication sre de l'chec de execve(2).

       Si la macro de test de  fonctionnalit  _XOPEN_SOURCE  est  dfinie,  les
       macros  dcrites  dans wait(2) (WEXITSTATUS(), etc.) sont disponibles en
       incluant <stdlib.h>.

VOIR AUSSI

       sh(1), signal(2), wait(2), exec(3)

COLOPHON

       Cette page fait partie de  la  publication  3.07  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies    peuvent    tre    trouves     l'adresse    http://www.ker-
       nel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de manuel a t traduite et mise  jour par Christophe Blaess
       <http://www.blaess.fr/christophe/>; entre 1996 et 2003, puis  par  Alain
       Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006, et mise  disposi-
       tion sur http://manpagesfr.free.fr/.

       Les mises  jour et corrections de la version prsente dans  Debian  sont
       directement gres par Nicolas Franois <nicolas.francois [AT] centraliens.net>
       et l'quipe francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction    en    crivant
       <debian-l10n-french [AT] lists.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accs  la version anglaise de ce document  en
       utilisant la commande  man -L C <section> <page_de_man> .



                                20 dcembre 2004                      SYSTEM(3)

COMMENTS

Add your comment here. Whitespace and linebreaks are preserved. URLs are linked automatically.
CAPTCHA

No HTML allowed. URLs will be linked with nofollow attribute. Whitespace is preserved.