Sdílet prostřednictvím


_popen _wpopen

Vytvoří kanál a provede příkaz.

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

Toto rozhraní API nelze použít v aplikacích, které jsou spuštěny v systému 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, který má být proveden.

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

Vrácená hodnota

Vrátí hodnotu datového proudu asociovaného s jeden konec kanálu.Konci kanálu je spojen s standardního vstupu nebo standardního výstupu příkazu vytvořeny.Funkce vrátí NULL na chybu.Pokud jde o chybu 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.Platné režimy v části poznámky.

Informace o těchto i ostatních kódů chyb naleznete v tématu _doserrno, kód chyby, _sys_errlist a _sys_nerr.

Poznámky

_popen Funkce vytvoří kanál a spustí asynchronně vytvořeny 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 vytvářený příkaz standardního výstupu pomocí vrácené datového proudu.

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

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

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

    [!POZNÁMKA]

    Je-li 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 verzí širokého znaku _popen; cestu argument _wpopen je řetězec širokého znaku._wpopena _popen jinak chovat identicky.

Mapování rutiny obecného textu

Byla zahájena rutina Tchar.h

_UNICODE a _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tpopen

_popen

_popen

_wpopen

Požadavky

Byla zahájena rutina

Požadované záhlaví

_popen

<stdio.h>

_wpopen

<stdio.h> nebo <wchar.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Knihovny

Všechny verze C run-time libraries.

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

Vzorový výstup

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 Volání funkce standardním C pomocí PInvoke. Další informace naleznete v tématu Platformu vyvolání příklady.

Viz také

Referenční dokumentace

Proces a řízení prostředí

_pclose

_pipe