_popen _wpopen
Vytvoří kanál a provede příkaz.
![]() |
---|
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.