Provided by: manpages-fr-dev_3.65d1p1-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   fonctionnalités   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 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.

       L'argument command est un pointeur sur une chaîne de caractères, terminée par un caractère
       nul, et contenant une ligne de commande shell. Cette commande est transmise à  /bin/sh  en
       utilisant  l'option  -c.  L'interprétation en est laissée au shell. L'argument type est un
       pointeur sur une chaîne de caractères, terminée par un caractère nul,  qui  doit  contenir
       soit  la  lettre  « r »  pour  la  lecture soit la lettre « w » pour l'écriture. Depuis la
       glibc 2.9, ce paramètre peut également contenir la lettre « e », qui  a  pour  conséquence
       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  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  ouvert par popen()
       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().

       Notez que, par défaut, 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'état de sortie de la commande, comme en utilisant wait4(2).

VALEUR RENVOYÉE

       La fonction popen() renvoie NULL si l'appel système fork(2) ou pipe(2) échoue, ou s'il n'a
       pas assez de mémoire.

       La  fonction  pclose() renvoie -1 si wait4(2) échoue, ou si une autre erreur est détectée.
       En cas d'erreur, errno permet d'identifier la cause de l'erreur.

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.

CONFORMITÉ

       POSIX.1-2001.

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

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 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/> (2003-2006). Nicolas  François  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».