Compartilhar via


_popen, _wpopen

Cria um pipe e executa um comando.

Importante

Esta API não pode ser usada em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /ZW.

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

Parâmetros

  • comando
    Comando a ser executado.

  • mode
    Modo de fluxo retornado.

Valor de retorno

Retorna um fluxo associado a uma extremidade do pipe criado. A outra extremidade do pipe será associada à saída padrão de entrada ou padrão de comando gerado. As funções nulo de retorno em um erro. Se o erro for um parâmetro inválido, como se o comando ou no modo for um ponteiro nulo, ou o modo não é um modo válido, errno está 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, and _sys_nerr.

Comentários

A função de _popen cria um pipe e executar de forma assíncrona uma cópia desovada do processador de comando com o comandoespecificado de cadeia de caracteres. O modo de cadeia de caracteres especifica o tipo de acesso solicitado, como a seguir.

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

  • "w"
    O processo de chamada pode gravar na entrada de comando padrão gerado que usa o fluxo retornado.

  • "b"
    Abrir no modo binário.

  • "t"
    Abrir no modo de texto.

    Dica

    Se usado em um programa do windows, a função de _popen retorna um ponteiro de arquivo inválido que faz com que o programa pare de responder indefinidamente._popen funciona corretamente em um aplicativo de console.Para criar um aplicativo do Windows que redireciona a entrada e as saídas, consulte Criando um processo filho com a entrada e a saída redirecionada em Windows SDK.

_wpopen é uma versão de ampla caractere de _popen; o argumento de caminho a _wpopen é uma cadeia de caracteres de ampla caractere. Caso contrário, _wpopen e _popen, ao contrário, se comportam de forma idêntica.

Mapeamentos da rotina de texto genérico

Rotina Tchar.h

_UNICODE e _MBCS não definidos

_MBCS definido

_UNICODE definido

_tpopen

_popen

_popen

_wpopen

Requisitos

Rotina

Cabeçalho necessário

_popen

<stdio.h>

_wpopen

<stdio.h> ou <wchar.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Todas as versões das Bibliotecas em tempo de execução 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");
   }
}

Saída de Exemplo

Essa saída assumem que há apenas um arquivo no diretório atual com a 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 chamadas de plataformas.

Consulte também

Referência

Processo e controle de ambiente

_pclose

_pipe