Share via


_popen, _wpopen

Crée un canal et exécute une commande.

Important

Cette API ne peut pas être utilisée dans les applications qui s'exécutent dans les fenêtres d'exécution.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /ZW.

FILE *_popen( const char *command, const char *mode ); FILE *_wpopen( const wchar_t *command, const wchar_t *mode );

Paramètres

  • commande
    Commande à exécuter.

  • mode
    État du flux retourné.

Valeur de retour

Retourne un flux associé à une extrémité du canal créé.L'autre extrémité du canal est associée à l'entrée standard ou la sortie standard de la commande engendrée.Les fonctions null de retour d'une erreur.Si l'erreur est un paramètre non valide, tel que si la commande ou le mode est un pointeur null, ou mode n'est pas un état valide, errno a la valeur EINVAL.Consultez la section Notes pour les modes valides.

Pour plus d'informations sur ces et d'autres codes d'erreur, consultez l' _doserrno, errno, _sys_errlist, et _sys_nerr.

Notes

La fonction d' _popen crée un canal et exécute de façon asynchrone une copie engendrée du processeur de commandes avec la commandespécifiée de chaîne.Le mode de chaîne spécifie le type d'accès demandé, comme suit.

  • "r"
    Le processus appelant peut lire la sortie standard de la commande engendrée à l'aide de le flux de données retourné.

  • "w"
    Le processus appelant peut écrire à l'entrée standard de la commande engendrée à l'aide de le flux de données retourné.

  • "b"
    Ouvrez en mode binaire.

  • "t"
    Ouvrez en mode texte.

    [!REMARQUE]

    Si utilisé dans un programme Windows, la fonction d' _popen retourne un pointeur de fichier non valide qui provoque l'arrêt du programme de répondre indéfiniment._popen fonctionne correctement dans une application console.Pour créer une application Windows qui redirige l'entrée et de sortie, consultez l' Créer un processus enfant à l'entrée et de sortie redirigée dans Kit de développement logiciel Windows.

_wpopen est une version à caractère élargi d' _popen; l'argument de chemin d'accès à _wpopen est une chaîne à caractères larges._wpopen et _popen se comportent de sinon.

Mappages de routines de texte générique

Routine de Tchar.h

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tpopen

_popen

_popen

_wpopen

Configuration requise

Routine

En-tête requis

_popen

<stdio.h>

_wpopen

<stdio.h> ou <wchar.h>

Pour plus d'informations de compatibilité, consultez l' Compatibilité dans l'introduction.

Bibliothèques

Toutes les versions d' Bibliothèques runtime C.

Exemple

// crt_popen.c
/* This program uses _popen and _pclose to receive a 
 * stream of text from a system process.
 */

#include <stdio.h>
#include <stdlib.h>

int main( void )
{

   char   psBuffer[128];
   FILE   *pPipe;

        /* Run DIR so that it writes its output to a pipe. Open this
         * pipe with read text attribute so that we can read it 
         * like a text file. 
         */

   if( (pPipe = _popen( "dir *.c /on /p", "rt" )) == NULL )
      exit( 1 );

   /* Read pipe until end of file, or an error occurs. */

   while(fgets(psBuffer, 128, pPipe))
   {
      printf(psBuffer);
   }


   /* Close pipe and print return value of pPipe. */
   if (feof( pPipe))
   {
     printf( "\nProcess returned %d\n", _pclose( pPipe ) );
   }
   else
   {
     printf( "Error: Failed to read the pipe to the end.\n");
   }
}

Résultat de l'exemple

Cette sortie suppose qu'il existe un seul fichier dans l'de données actif avec l'extension de nom de fichier .c.

 Volume in drive C is CDRIVE
 Volume Serial Number is 0E17-1702

 Directory of D:\proj\console\test1

07/17/98  07:26p                   780 popen.c
               1 File(s)            780 bytes
                             86,597,632 bytes free

Process returned 0

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' Exemples d'appel de code non managé.

Voir aussi

Référence

Processus et contrôle ambiance

_pclose

_pipe