Sdílet prostřednictvím


_popen, _wpopen

Kanálu vytvoří a provede příkaz.

Důležitá poznámkaDůležité

Toto API nelze použít v aplikacích, které jsou spuštěny v modulu Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW.

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

Parametry

  • příkaz
    Příkaz má být proveden.

  • režim
    Režim vrácené datového proudu.

Vrácená hodnota

Vrátí datový proud přidružené jednoho konce kanálu.Konci kanálu je přidružen k standardní vstup nebo výstup standardní příkaz spuštěný.Vrátí funkce NULL na chybu.Pokud je chyba neplatného parametru, například v případě příkaz nebo režimu je ukazatel s hodnotou null, nebo režimu není platný režim errno je nastavena na EINVAL.Naleznete v části poznámky pro platné režimy.

Informace o těchto a dalších chybových kódech naleznete v části _doserrno, errno, _sys_errlist, and _sys_nerr.

Poznámky

_popen Funkce vytváří kanál a asynchronně provede vytvořená kopie příkazový procesor s zadaný řetězec příkaz.Řetězec znaků režimu Určuje typ takto požadovaný přístup.

  • "r"
    Volající proces může číst vytvořená příkazu vrácené datového proudu pomocí standardního výstupu.

  • "w"
    Volající proces může zapisovat do standardního vstupu příkazu vytvořená pomocí datový proud vrácený.

  • "b"
    V binárním režimu.

  • "t"
    Otevřít v textovém režimu.

    [!POZNÁMKA]

    Pokud použité v programu systému Windows, _popen funkce vrací neplatný ukazatel, který způsobuje, že program přestane reagovat po neomezenou dobu._popenfunguje správně v konzolové aplikaci.Chcete-li vytvořit aplikaci pro systém Windows, který přesměruje vstup a výstup, viz vytváření podřízený proces přesměrování vstupu a výstupu v Windows SDK.

_wpopenje verze širokého znaku _popen; cesta argument _wpopen je řetězec širokého znaku._wpopen a _popen se jinak chovají stejně.

Rutinní mapování obecného textu

Rutina Tchar.h

_UNICODE a _MBCS nejsou definovány

_MBCS definováno

_UNICODE definováno

_tpopen

_popen

_popen

_wpopen

Požadavky

Rutina

Požadované záhlaví

_popen

<stdio.h>

_wpopen

<stdio.h> nebo <wchar.h>

Další informace o kompatibilitě naleznete v tématu Kompatibilita.

Knihovny

Všechny verze běhových knihoven C.

Příklad

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

Výstup ukázky

Tento výstup se předpokládá, že existuje pouze jeden soubor v aktuálním adresáři s příponou názvu souboru .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

Ekvivalent v rozhraní .NET Framework

Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.

Viz také

Referenční dokumentace

Řízení procesů a prostředí

_pclose

_pipe