Udostępnij za pośrednictwem


_popen, _wpopen

Potok tworzy i wykonuje polecenia.

Ważna uwagaWaż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.

Zobacz też

Informacje

Procedury kontroli środowiska

_pclose

_pipe