Condividi tramite


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

Vedere anche

Riferimenti

Controllo processo e ambiente

_pclose

_pipe