_popen, _wpopen
Potok tworzy i wykonuje polecenia.
Ważne |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /ZW. |
FILE *_popen(
const char *command,
const char *mode
);
FILE *_wpopen(
const wchar_t *command,
const wchar_t *mode
);
Parametry
polecenia
Polecenie do wykonania.Tryb
Tryb strumienia zwrócone.
Wartość zwracana
Zwraca strumień skojarzony jeden koniec rury utworzone.Drugi koniec potoku jest skojarzony z zduplikowanego polecenia standardowego wejścia lub wyjścia standardowego.Funkcje zwracają wartość wartości NULL w błąd.Jeśli błąd jest nieprawidłowy parametr, takich jak if polecenia lub Tryb jest wskaźnik zerowy lub Tryb nie jest prawidłowy tryb, errno jest ustawiona na EINVAL.Zobacz sekcję Spostrzeżenia dla prawidłowe tryby.
Aby uzyskać informacje na temat tych i innych kodów błędu, zobacz _doserrno, errno, _sys_errlist, and _sys_nerr.
Uwagi
_popen Funkcja tworzy potok i asynchronicznie wykonuje kopię zduplikowanego procesor poleceń z podanego ciągu polecenia.Ciąg znaków Tryb Określa typ dostępu, w następujący sposób.
"r"
Proces wywołujący może odczytywać polecenia zduplikowanego wyjścia standardowego za pomocą strumienia zwrócone."w"
Proces wywołujący może zapisywać standardowe dane wejściowe polecenia zduplikowanego za pomocą strumienia zwrócone."b"
Otwórz w trybie binarnym."t"
Otwórz w trybie tekstowym.[!UWAGA]
Jeśli używana w programie Windows, _popen , funkcja zwraca do wskaźnika nieprawidłowy plik, który powoduje, że program przestanie odpowiadać przez czas nieokreślony._popendziała poprawnie w aplikacji konsoli.Aby utworzyć aplikacji systemu Windows, które przekierowuje dane wejściowe i wyjściowe, zobacz tworzenia procesu podrzędnego z przekierowanie wejścia i wyjścia w Windows SDK.
_wpopenjest to wersja szeroko charakter _popen; ścieżki argument _wpopen jest ciągiem znaków wide._wpopen i _popen zachowują się identycznie w innych przypadkach.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE i _MBCS nie zdefiniowany |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_tpopen |
_popen |
_popen |
_wpopen |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_popen |
<stdio.h> |
_wpopen |
<stdio.h> lub <wchar.h> |
Aby uzyskać więcej informacji na temat zgodności – zobacz: Zgodność.
Biblioteki
Wszystkie wersje Bibliotek uruchomieniowych C.
Przykład
// 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");
}
}
Przykładowe dane wyjściowe
Te dane wyjściowe założono, że istnieje tylko jeden plik w bieżącym katalogu z rozszerzeniem nazwy pliku .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
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.