Compartilhar via


_popen, _wpopen

Cria um pipe e executar um comando.

Observação importanteImportante

Este API não pode ser usado em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas com /ZW.

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

Parâmetros

  • comando
    Comando ser executado.

  • para
    Modo de fluxo retornado.

Valor de retorno

Retorna um fluxo associado com a fim de pipe criado.Outra extremidade de pipe está associada com a saída padrão de entrada ou padrão de comando desovado.Funções de retorno NULO em um erro.Se o erro é um parâmetro inválido, como se o comando ou modo são um ponteiro zero, ou o modo não é uma forma válido, errno é definido como EINVAL.Consulte a seção comentários para modos válidos.

Para obter informações sobre esses e outros códigos de erro, consulte _doserrno, errno, _sys_errlist, e _sys_nerr.

Comentários

A função de _popen cria um pipe e executa de forma assíncrona uma cópia desovada do processador de comando com o comandode cadeia de caracteres especificado.O modo de cadeia de caracteres especifica o tipo de acesso aplicativo, como segue.

  • "r"
    O processo de chamada pode ler a saída padrão de comando desovado usando o fluxo retornado.

  • "w"
    O processo de chamada pode escrever a entrada padrão de comando desovado que usa o fluxo retornado.

  • "b"
    Abrir no modo binário.

  • "t"
    Abrir no modo de texto.

    ObservaçãoObservação

    Se usado em um programa do Windows, a função de _popen retorna um ponteiro de arquivo válido que faz com que o programa pára de responder indefinidamente._popen funciona corretamente em um aplicativo de console.Para criar um aplicativo do Windows que emite entrada e saída, consulte Criando um processo filho com entrada e saída redirecionadas em Windows SDK.

_wpopen é uma versão de largo- caractere de _popen; o argumento de caminho a _wpopen é uma cadeia de caracteres de largo- caractere._wpopen e _popen se comportam de forma idêntica.

Mapeamentos da rotina de Genérico- texto

Rotina de Tchar.h

_UNICODE e não definidos _MBCS

_MBCS definido

_UNICODE definido

_tpopen

_popen

_popen

_wpopen

Requisitos

Rotina

Cabeçalho necessário

_popen

<stdio.h>

_wpopen

<stdio.h> ou <wchar.h>

Para mais informações, consulte Compatibilidade de compatibilidade na introdução.

Bibliotecas

Todas as versões de Bibliotecas em tempo de execução de C.

Exemplo

// 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");
   }
}

A saída de exemplo

Essa saída presumem que há apenas um arquivo no diretório atual com extensão de nome de arquivo de c#. A.

 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

Equivalência do .NET Framework

Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Processo e controle do ambiente

_pclose

_pipe