Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       popen, pclose - Entrées-sorties pour un processus

SYNOPSIS

       #include <stdio.h>

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

       int pclose(FILE *stream);

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  commande  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 « r » pour la lecture ou « w » pour l’écriture.

       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.

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.

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)

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 à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       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> ».