_popen, _wpopen
Kanálu vytvoří a provede příkaz.
Dů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.