Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       popen, pclose - Tuyau entrant ou sortant pour un processus

SYNOPSIS

       #include <stdio.h>

       FILE *popen(const char *command, const char *type);

       int pclose(FILE *stream);

   Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

       popen(), pclose() :
           _POSIX_C_SOURCE >= 2
               || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

       La  fonction popen() engendre un processus en créant un tube (pipe), exécutant un fork(), et en invoquant
       le shell. Comme un tube est unidirectionnel par définition, l'argument type doit indiquer  seulement  une
       lecture  ou  une  écriture,  et  non  pas les deux. Le flux correspondant sera ouvert en lecture seule ou
       écriture seule.

       The command argument is a pointer to a null-terminated string  containing  a  shell  command  line.  This
       command is passed to /bin/sh using the -c flag; interpretation, if any, is performed by the shell.

       The  type  argument is a pointer to a null-terminated string which must contain either the letter 'r' for
       reading or the letter 'w' for writing. Since glibc 2.9, this argument can additionally include the letter
       'e', which causes the close-on-exec flag (FD_CLOEXEC)  to be set on the underlying file  descriptor;  see
       the description of the O_CLOEXEC flag in open(2)  for reasons why this may be useful.

       La  valeur renvoyée par popen() est un flux d'entrée-sortie normal, à la seule différence qu'il doit être
       fermé en appelant pclose() à la place de fclose(3). L'écriture dans  le  flux  correspond  à  écrire  sur
       l'entrée  standard  de  la  commande.  Le flux de sortie standard de la commande est le même que celui du
       processus appelant popen(), à moins que la commande le modifie. Symétriquement, la lecture depuis un flux
       correspond à lire la sortie standard de la commande, et dans ce cas l'entrée standard de la commande  est
       la même que celle du processus appelant popen().

       Note that output popen()  streams are block buffered by default.

       La  fonction pclose() attend que le processus correspondant se termine, et renvoie alors l'état de sortie
       de la commande, comme en utilisant wait4(2).

VALEUR RENVOYÉE

       popen(): on success, returns a pointer to an open stream that can be used to read or write to  the  pipe;
       if the fork(2)  or pipe(2)  calls fail, or if the function cannot allocate memory, NULL is returned.

       pclose():  on  success,  returns  the  exit status of the command; if wait4(2)  returns an error, or some
       other error is detected, -1 is returned.

       Both functions set errno to an appropriate value in the case of an error.

ERREURS

       La fonction popen ne remplit pas errno si une allocation mémoire échoue. Si les appels fork(2) ou pipe(2)
       sous-jacents échouent, errno est correctement rempli. Si  l'argument  type  est  invalide,  et  si  cette
       condition est détectée, errno contient EINVAL.

       Si pclose() n'arrive pas à obtenir l'état du fils, errno contient ECHILD.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌───────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├───────────────────┼──────────────────────┼─────────┤
       │ popen(), pclose() │ Sécurité des threads │ MT-Safe │
       └───────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008.

       La valeur « e » pour type est une extension Linux.

NOTES

       Note: carefully read Caveats in system(3).

BOGUES

       Comme  l'entrée  standard d'une commande ouverte en lecture partage son pointeur de position dans le flux
       avec le processus appelant popen(), si le processus original  a  effectué  des  lectures  en  tampon,  la
       position  du  flux  d'entrée  de  la  commande peut être différente de celle attendue. Symétriquement, la
       sortie d'une commande ouverte en écriture peut s'emmêler avec celle  du  processus  original.  Le  second
       problème peut être évité en appelant fflush(3) avant popen().

       Il  n'est pas possible de distinguer un échec d'exécution du shell lui-même, d'un échec d'exécution d'une
       commande par le shell, ni même d'une sortie immédiate de la commande. Le  seul  indice  est  un  code  de
       retour de 127.

VOIR AUSSI

       sh(1), fork(2), pipe(2), wait4(2), fclose(3), fflush(3), fopen(3), stdio(3), system(3)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org> et Frédéric Hantrais <fhantrais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

GNU                                             15 septembre 2017                                       POPEN(3)