_popen, _wpopen

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

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

System_CAPS_ICON_important.jpg Important

Cette API ne peut pas être utilisée dans les applications qui s'exécutent dans le Windows Runtime. 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
Mode du flux retourné.

Retourne un flux associé à une extrémité du canal créé. L’autre extrémité du canal est associée de l’entrée standard de la commande générée ou une sortie standard. Ces fonctions retournent NULL en cas d’erreur. Si l’erreur est un paramètre non valide, par exemple si commande ou mode est un pointeur null, ou mode n’est pas un mode valid, errno est défini sur EINVAL. Consultez la section Notes pour les modes valides.

Pour plus d’informations sur les autres codes d’erreur, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

Le _popen fonction crée un canal et exécute de façon asynchrone une copie de l’interpréteur de commandes avec la chaîne spécifiée engendrée commande. La chaîne de caractères mode Spécifie le type d’accès demandé, comme suit.

« r »
Le processus appelant peut lire la sortie standard de la commande généré à l’aide du flux retourné.

« w »
Le processus appelant peut écrire dans l’entrée standard de la commande généré à l’aide du flux retourné.

« b »
Ouvrir en mode binaire.

« t »
Ouvrir en mode texte.

System_CAPS_ICON_note.jpg Remarque

Si utilisé dans un programme Windows, le _popen fonction retourne un pointeur de fichier non valide qui oblige le programme se bloquer indéfiniment. _popenfonctionne correctement dans une application console. Pour créer une application Windows qui redirige les entrées et sorties, consultez création d’un processus enfant avec la redirection d’entrée et sortie dans les SDK Windows.

_wpopenest une version à caractère élargi de _popen; le chemin d’accès l’argument de _wpopen est une chaîne à caractères larges. Sinon, _wpopen et _popen se comportent de la même façon.

Mappages de routines de texte générique

Routine Tchar.h_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tpopen_popen_popen_wpopen
RoutineEn-tête requis
_popen<stdio.h>
_wpopen<stdio.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Toutes les versions des bibliothèques Runtime C.

// 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");  
   }  
}  

Cette sortie suppose que qu’un seul fichier dans le répertoire actuel avec une 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  

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Processus de contrôle et d’environnement
_pclose
_pipe

Afficher: