Freigeben über


_popen, _wpopen

Erstellt eine Pipe und führt einen Befehl aus.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

FILE *_popen( 
const char *command, 
const char *mode  
); 
FILE *_wpopen( 
const wchar_t *command, 
const wchar_t *mode  
);

Parameter

  • command
    Befehl, der ausgeführt werden soll.

  • mode
    Modus des zurückgegebenen Streams.

Rückgabewert

Gibt einen Stream zurück, der einem Ende der erstellten Pipe zugeordnet ist. Das andere Ende der Pipe ist der Standardeingabe oder Standardausgabe des erzeugten Befehls zugeordnet. Die Funktionen geben bei einem Fehler NULL zurück. Wenn der Fehler ein ungültiger Parameter ist, etwa wenn command oder mode ein NULL-Zeiger ist, oder mode kein gültiger Modus ist, wird errno auf EINVAL festgelegt. Gültige Modi können Sie dem Abschnitt mit den Hinweisen entnehmen.

Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die _popen-Funktion erstellt eine Pipe und führt asynchron eine generierte Kopie des Befehlsprozessors mit der angegebenen Zeichenfolge command aus. Die Zeichenfolge mode gibt den angeforderten Zugriffstyp wie folgt an.

  • "r"
    Der aufrufende Prozess kann die Standardausgabe des erzeugten Befehls mit dem zurückgegebenen Stream lesen.

  • "w"
    Der aufrufende Prozess kann die Standardeingabe des erzeugten Befehls mit dem zurückgegebenen Stream schreiben.

  • "b"
    Öffnen im binären Modus.

  • "t"
    Öffnen im Textmodus.

    Hinweis

    Wenn die _popen-Funktion in einem Windows-Programm verwendet wird, gibt sie einen ungültigen Dateizeiger zurück, der dafür sorgt, dass das Programm für unbestimmte Zeit nicht mehr reagiert._popen funktioniert in einer Konsolenanwendung.Wie eine Windows-Anwendung erstellt wird, die Eingabe und Ausgabe umleitet, lesen Sie im Artikel zum Erstellen eines untergeordneten Prozesses mit umgeleiteter Eingabe und Ausgabe von Windows SDK.

_wpopen ist eine Breitzeichenversion von _popen. Das path-Argument für _wpopen ist eine Breitzeichenfolge. _wpopen und _popen verhalten sich andernfalls identisch.

Zuordnung generischer Textroutinen

Tchar.h-Routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tpopen

_popen

_popen

_wpopen

Anforderungen

Routine

Erforderlicher Header

_popen

<stdio.h>

_wpopen

<stdio.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Bibliotheken

Alle Versionen C-Laufzeitbibliotheken.

Beispiel

// 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");
   }
}

Beispielausgabe

Bei dieser Ausgabe wird davon ausgegangen, dass das aktuelle Verzeichnis nur eine Datei mit der Dateinamenerweiterung .c enthält.

 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

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Prozess- und Umgebungssteuerung

_pclose

_pipe