_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 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
command
Commande à exécuter.mode
Mode 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 du standard de la commande engendrée ou à la sortie standard. Les fonctions retournent NULL sur 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 mode valide, errno a la valeur EINVAL. Consultez la section Notes des modes valides.
Pour plus d'informations sur ces éléments et autres codes d'erreur, consultez _doserrno, errno, _sys_errlist et _sys_nerr.
Notes
La fonction _popen crée un canal et exécute de façon asynchrone une copie engendrée de l'interpréteur de commandes avec la commandespécifiée de chaîne. Le mode de chaînes de caractères 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 du flux retourné."w"
Le processus appelant peut écrire à l'entrée du standard de la commande engendrée à l'aide du flux retourné."b"
Ouvrez en mode binaire."t"
Ouvrir en mode texteNotes
Si utilisé dans un programme Windows, la fonction _popen retourne un pointeur de fichier non valide qui implique que le programme arrête indéfiniment de répondre._popen fonctionne 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 à l'entrée et sortie redirigée dans le Kit de développement logiciel Windows.
_wpopen est une version à caractères larges de _popen; l'argument path de _wpopenest une chaîne à caractères larges. _wpopen et _popen se comportent sinon de manière identique.
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 |
Configuration requise
Routine |
En-tête requis |
---|---|
_popen |
<stdio.h> |
_wpopen |
<stdio.h> ou <wchar.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité.
Bibliothèques
Toutes les versions des 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 le répertoire 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 Exemples d'appel de plateforme.