_popen, _wpopen_popen, _wpopen

Crea una pipe ed esegue un comando.Creates a pipe and executes a command.

Importante

Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime.This API cannot be used in applications that execute in the Windows Runtime. Per ulteriori informazioni, vedere funzioni CRT non supportate nelle App Universal Windows Platform.For more information, see CRT functions not supported in Universal Windows Platform apps.

SintassiSyntax

FILE *_popen(
const char *command,
const char *mode
);
FILE *_wpopen(
const wchar_t *command,
const wchar_t *mode
);

ParametriParameters

commandcommand
Comando da eseguire.Command to be executed.

modemode
Modalità del flusso restituito.Mode of the returned stream.

Valore restituitoReturn Value

Restituisce un flusso associato a un'estremità della pipe creata.Returns a stream associated with one end of the created pipe. L'altra estremità della pipe viene associata all'input standard o all'output standard del comando generato.The other end of the pipe is associated with the spawned command's standard input or standard output. Le funzioni restituiscono NULL in caso di errore.The functions return NULL on an error. Se l'errore è un parametro non valido, ad esempio se command o mode è un puntatore Null oppure se mode non è una modalità valida, errno viene impostato su EINVAL.If the error is an invalid parameter, such as if command or mode is a null pointer, or mode is not a valid mode, errno is set to EINVAL. Per informazioni sulle modalità valide, vedere la sezione Note.See the Remarks section for valid modes.

Per informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.For information about these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

NoteRemarks

La funzione _popen crea una pipe ed esegue in modo asincrono una copia generata del processore dei comandi con la stringa command specificata.The _popen function creates a pipe and asynchronously executes a spawned copy of the command processor with the specified string command. La stringa di caratteri mode specifica il tipo di accesso richiesto, come segue.The character string mode specifies the type of access requested, as follows.

"r""r"
Il processo chiamante può leggere l'output standard del comando generato usando il flusso restituito.The calling process can read the spawned command's standard output using the returned stream.

"w""w"
Il processo chiamante può scrivere nell'input standard del comando generato usando il flusso restituito.The calling process can write to the spawned command's standard input using the returned stream.

"b""b"
Apertura in modalità binaria.Open in binary mode.

"t""t"
Apertura in modalità testo.Open in text mode.

Nota

Se usata in un programma Windows, la funzione _popen restituisce un puntatore di file non valido, a causa del quale il programma smette di rispondere indefinitamente.If used in a Windows program, the _popen function returns an invalid file pointer that causes the program to stop responding indefinitely. _popen funziona correttamente in un'applicazione console._popen works properly in a console application. Per creare un'applicazione Windows che reindirizza l'input e output, vedere creazione di un processo figlio con reindirizzato Input e Output in Windows SDK.To create a Windows application that redirects input and output, see Creating a Child Process with Redirected Input and Output in the Windows SDK.

_wpopen è una versione a caratteri wide di _popen. L'argomento path per _wpopen è una stringa di caratteri wide._wpopen is a wide-character version of _popen; the path argument to _wpopen is a wide-character string. In caso contrario, _wpopen e _popen si comportano in modo identico._wpopen and _popen behave identically otherwise.

Mapping di routine di testo genericoGeneric-Text Routine Mappings

Routine Tchar.hTchar.h routine _UNICODE e _MBCS non definiti_UNICODE and _MBCS not defined _MBCS definito_MBCS defined _UNICODE definito_UNICODE defined
_tpopen _popen _popen _wpopen

RequisitiRequirements

RoutineRoutine Intestazione obbligatoriaRequired header
_popen <stdio.h><stdio.h>
_wpopen <stdio.h> o <wchar.h><stdio.h> or <wchar.h>

Per altre informazioni sulla compatibilità, vedere Compatibilità.For more compatibility information, see Compatibility.

LibrerieLibraries

Tutte le versioni delle librerie di runtime C.All versions of the C run-time libraries.

EsempioExample

// 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 outputSample Output

Questo output presuppone che esista un solo file nella directory corrente con estensione c.This output assumes that there is only one file in the current directory with a .c file name extension.

 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  

Vedere ancheSee Also

Controllo processo e ambiente Process and Environment Control
_pclose _pclose
_pipe_pipe