_popen, _wpopen
Crea una pipe ed esegue un comando.
![]() |
---|
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à flusso restituito.
Valore restituito
Restituisce un flusso associato a un'estremità pipe create.L'altra estremità della pipe viene associata all'output standard di input standard o il comando generato.Le funzioni NULL di ritorno su un errore.Se l'errore è un parametro non valido, ad esempio se il comando o la modalità è un puntatore null, la modalità o non è una tecnica valida, errno è impostato su EINVAL.Vedere la sezione relativa alle osservazioni per le modalità valide.
Per informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.
Note
La funzione di _popen crea una pipe e in modo asincrono esegue una copia generata per il processore di comando con il comandospecificato della stringa.La modalità di stringa di caratteri specifica il tipo di accesso richiesto, come segue.
"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à testo.[!NOTA]
Se utilizzato in un programma per windows, la funzione di _popen restituisce un puntatore di file non valido sì che il programma a non rispondere a oltranza.funzionamento di_popen 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 estesi di _popen; l'argomento del percorso di _wpopen è una stringa di caratteri estesi._wpopen e _popen si comportano in modo identico in caso contrario.
Mapping di routine a 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à nell'introduzione.
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.