Udostępnij za pośrednictwem


_popen, _wpopen

Tworzy potok i wykonuje polecenie.

Ważna uwagaWażne

Ten interfejs API nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsł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 zwracane.

Wartość zwracana

Zwraca strumień skojarzonych z jednego końca potoku utworzone.Drugim końcu potoku jest skojarzony z polecenia zduplikowanego standardowego wejścia lub wyjścia standardowego.Funkcje te zwracają NULL na błąd.Jeśli błąd jest nieprawidłowy parametr, takich jak if polecenia lub Tryb jest pusty wskaźnik, lub Tryb nie jest prawidłowy tryb, errno jest ustawiona na EINVAL.Zobacz sekcję Spostrzeżenia prawidłowe tryby.

Aby uzyskać informacje na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _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 zgłoszony następujący.

  • "r"
    Proces wywołujący może odczytywać polecenia zduplikowanego standardowego wyjścia przy użyciu Strumień zwrócony.

  • "w"
    Proces wywołujący może zapisywać standardowe dane wejściowe polecenia zduplikowanego za pomocą strumienia zwracane.

  • "b"
    Otwórz w trybie binarnym.

  • "t"
    Otwórz w trybie tekstowym.

    [!UWAGA]

    Jeśli używana w programie Windows _popen , funkcja zwraca wskaźnik nieprawidłowy plik, który spowoduje, że program przestaje odpowiadać przez czas nieokreślony._popendziała poprawnie, w aplikacji konsoli.Aby utworzyć aplikację systemu Windows, która przekierowuje dane wejściowe i wyjściowe, zobacz tworzenia procesu potomnego z przekierowano wejściowego i wyjściowego w Windows SDK.

_wpopenjest ona szerokich znaków do _popen; ścieżka argument _wpopen jest ciągiem szerokich znaków._wpopeni _popen zachowują się identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

Rozpoczęto wykonywanie procedury TCHAR.h

_UNICODE i _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tpopen

_popen

_popen

_wpopen

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_popen

<stdio.h>

_wpopen

<stdio.h> lub <wchar.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje programu biblioteki uruchomieniowej 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 zakłada, ż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ływać funkcji C standardowej, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Proces i kontroli środowiska

_pclose

_pipe