Provided by: manpages-fr-dev_3.27fr1.4-1_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 fonctionnalites pour la glibc (consultez
   feature_test_macros(7)) :

       popen(), pclose() :
           _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE || _BSD_SOURCE ||
           _SVID_SOURCE

DESCRIPTION

       La  fonction  popen()  engendre  un processus en creant un tube (pipe),
       executant un fork(), et en  invoquant  le  shell.  Comme  un  tube  est
       unidirectionnel par definition, l'argument type doit indiquer seulement
       une lecture ou une ecriture, et non pas les deux. Le flux correspondant
       sera ouvert en lecture seule ou ecriture seule.

       L'argument  command  est  un  pointeur  sur  une  chaine de caracteres,
       terminee par un caractere nul,  et  contenant  une  ligne  de  commande
       shell. Cette commande est transmise a /bin/sh en utilisant l'option -c.
       L'interpretation en est  laissee  au  shell.  L'argument  type  est  un
       pointeur  sur  une chaine de caracteres, terminee par un caractere nul,
       qui doit contenir soit la lettre << r >> pour la lecture soit la lettre
       << w >>  pour  l'ecriture.  Depuis  la  glibc 2.9,  ce  parametre  peut
       egalement  contenir  la  lettre  << e >>,  qui   a   pour   consequence
       l'activation  de  l'attribut  << close-on-exec >>  (FD_CLOEXEC) pour le
       descripteur  de  fichier ;  consultez  la  description  de   l'attribut
       O_CLOEXEC dans open(2) pour savoir quand c'est utile.

       La valeur renvoyee par popen() est un flux d'entree-sortie normal, a la
       seule difference qu'il doit etre ferme en appelant pclose() a la  place
       de  fclose(3). L'ecriture dans le flux correspond a ecrire sur l'entree
       standard de la commande. Le flux de sortie standard de la commande  est
       le  meme  que  celui  du  processus  appelant  popen(),  a moins que la
       commande le modifie. Symetriquement, la lecture depuis un  flux  ouvert
       par  popen()  correspond  a  lire la sortie standard de la commande, et
       dans ce cas l'entree standard de la commande est la meme que  celle  du
       processus appelant popen().

       Notez que, par defaut, les flux de sortie fournis par popen() disposent
       d'un tampon.

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

VALEUR RENVOY'EE

       La fonction popen() renvoie NULL si l'appel systeme fork(2) ou  pipe(2)
       echoue, ou s'il n'a pas assez de memoire.

       La  fonction  pclose()  renvoie  -1 si wait4(2) echoue, ou si une autre
       erreur est detectee.

ERREURS

       La fonction popen ne  remplit  pas  errno  si  une  allocation  memoire
       echoue.  Si  les appels fork(2) ou pipe(2) sous-jacents echouent, errno
       est correctement rempli. Si l'argument type est invalide, et  si  cette
       condition est detectee, errno contient EINVAL.

       Si  pclose()  n'arrive  pas  a  obtenir  l'etat du fils, errno contient
       ECHILD.

CONFORMIT'E

       POSIX.1-2001.

       La valeur << e >> pour type est une extension Linux.

BOGUES

       Comme l'entree 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 effectue des lectures en tampon, la position
       du flux d'entree de la commande peut etre differente de celle attendue.
       Symetriquement, la sortie  d'une  commande  ouverte  en  ecriture  peut
       s'emmeler  avec  celle  du  processus original. Le second probleme peut
       etre evite en appelant fflush(3) avant popen().

       Il n'est pas possible de  distinguer  un  echec  d'execution  du  shell
       lui-meme,  d'un  echec d'execution d'une commande par le shell, ni meme
       d'une sortie immediate 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  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> >>.

GNU                             3 fevrier 2010                        POPEN(3)