_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é.