Provided by: manpages-fr_1.67.0-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().  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 buffer.

       La fonction pclose attend que le processus correspondant se termine, et
       renvoie alors le statut de sortie de la commande,  comme  en  utilisant
       wait4.

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 é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() ou pipe() 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 le status du  fils,  errno  contient
       ECHILD.

CONFORMITÉ

       POSIX.2

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 buffer, 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.

HISTORIQUE

       Des fonctions popen() et pclose()  sont  apparues  dans  la  Version  7
       d’AT&T UNIX.

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 1996-2003.