_popen, _wpopen
Crea una pipe ed esegue un comando.
Importante
Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.
FILE *_popen(
const char *command,
const char *mode
);
FILE *_wpopen(
const wchar_t *command,
const wchar_t *mode
);
Parametri
comando
Comando da eseguire.mode
Modalità di restituzione del flusso.
Valore restituito
Restituisce un flusso associato alla fine di una pipe creata. L'altra estremità della pipe viene associata con l'input o l'output del comando generato. Le funzioni restituiscono NULL su un errore. Se l'errore è un parametro non valido, ad esempio se il comando o la modalità è un puntatore null, o la modalità non rappresenta un sistema valido, errno è impostato su EINVAL. Vedere la sezione relativa alle osservazioni, per le modalità valide.
Per ulteriori informazioni su questi e altri codici, vedere _doserrno, errno, _sys_errlist, e _sys_nerr.
Note
La funzione _popen crea una pipe e in modo asincrono viene generata una copia del processore di comando con la specifica stringa command. La stringa di caratteri modalità specifica il tipo di accesso richiesto, nel modo seguente.
"r"
Il processo chiamante può leggere l'output standard di comando generato utilizzando il flusso restituito."w"
Il processo chiamante può scrivere nell'input standard di comando generato utilizzando il flusso restituito."b"
Aprire in modalità binaria."t"
Aprire in modalità di testo.Nota
Se si utilizza in un programma Windows, la funzione _popen restituisce un puntatore di file non valido in modo che il programma non risponda all'infinito._popen funziona correttamente in un'applicazione console.Per creare un'applicazione Windows che reindirizza l'input e l'output, vedere Creare un processo figlio con input e output reindirizzati in Windows SDK.
_wpopen è una versione a caratteri di tipo "wide" di _popen; l'argomento path per _wpopen è una stringa a caratteri wide. _wpopen e _popen si comportano in modo identico in caso contrario.
Mapping di routine su testo generico
Routine Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tpopen |
_popen |
_popen |
_wpopen |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_popen |
<stdio.h> |
_wpopen |
<stdio.h> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.
Librerie
Tutte le versioni delle Librerie di runtime C.
Esempio
// 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");
}
}
Esempio di output
Questo output presuppone che vi sia un solo file nella directory corrente con l'estensione di file .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
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.