Condividi tramite


_popen, _wpopen

Crea una pipe ed esegue un comando.

Nota importanteImportante

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.

Vedere anche

Riferimenti

Processo e controllo ambiente

_pclose

_pipe