Provided by: manpages-fr_1.67.0-1_all bug

NOM

       system - Exécuter une commande Shell.

SYNOPSIS

       #include <stdlib.h>

       int system (const char * string);

DESCRIPTION

       La  fonction  system()  exécute  la  commande  indiquée  dans string en
       appelant /bin/sh -c string, et revient après l’exécution complete de la
       commande.  Durant cette exécution, le signal SIGCHLD est bloqué, et les
       signaux SIGINT et SIGQUIT sont ignorés.

VALEUR RENVOYÉE

       La valeur renvoyée est -1 en cas d’erreur (par exemple echec de fork())
       ou  le code de retour de la commande sinon. Ce dernier code est dans le
       format indiqué dans wait(2).   Ansi  le  retour  de  la  commande  sera
       WEXITSTATUS(status).   Dans le cas où /bin/sh ne peut pas être exécuté,
       le code de retour sera identique à celui d’une commande  effectuant  un
       exit(127).

       Si  la valeur de string est NULL, system() renvoie une valeur non nulle
       si le shell est accessible, et zéro sinon.

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

CONFORMITÉ

       ANSI C, POSIX.2, BSD 4.3

NOTES

       Comme mentionné plus haut, system() ignore SIGINT et SIGQUIT. Ceci peut
       rendre  ininterruptible  un  programme qui l’appelle en boucle, à moins
       qu’il ne vérifie 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  privilèges  Set-
       UID ou Set-GID. Des variables d’environnement avec des valeurs étranges
       peuvent être utilisées pour corrompre l’intégrité du système.  Utilisez
       les  fonctions  de la famille exec(3) à la place, mais pas execlp(3) ni
       execvp(3).

       system() ne fonctionnera pas correctement avec les programmes ayant des
       privilèges  fournis par les bits Set-UID ou Set-GID sur les systèmes où
       /bin/sh est bash version 2, car  celui-ci  rejette  les  privilèges  au
       démarrage.   (Debian  utilise  une  version  modifiée  de  bash  où  ce
       comportement est abandonné si on l’invoque sous le nom sh).

       La vérification de disponibilité du shell /bin/sh n’est pas  réellement
       faite.  Il  est  toujours supposé disponible. Le standard ISO C réclame
       cette vérification, mais POSIX.2 précise que le  retour  doit  toujours
       être  non-nul  car  un  système  sans  shell  n’est  pas conforme. Ceci
       justifie le choix d’implémentation.

       Il est possible qu’une commande shell renvoie 127,  ainsi  le  code  de
       retour  n’est pas une indication sûre de l’échec de execve().  Verifiez
       errno pour en être sûrs.

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 1996-2003.