_popen, _wpopen

Stellt eine Pipe erstellt und führt einen Befehl aus.

Wichtiger HinweisWichtig

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

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

Parameter

  • command
    Befehl ausgeführt werden.

  • mode
    Modus des zurückgegebenen Streams.

Rückgabewert

Gibt einen Stream zurück, der mit einem Ende der erstellten Pipe zugeordnet ist.Die anderen Ende der Pipe wird mit der generierten Standardeingabe- oder Standardausgabe des Befehls zugeordnet.Die Funktionen geben NULL bei einem Fehler zurück.Wenn der Fehler ein ungültiger Parameter ist, wie, wenn Befehl oder Modus ein NULL-Zeiger ist, oder Modus ist kein gültiger Modus, errno wird zu EINVAL festgelegt.Weitere Informationen finden Sie in den Hinweisen für gültige Modi.

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

Hinweise

Die _popen-Funktion stellt eine Pipe erstellt und führt asynchron eine generierte Kopie des Befehlsprozessors mit dem angegebenen Zeichenfolgenbefehl aus.Der Zeichenfolgen modus gibt den Typ des Zugriffs angefordert, wie folgt an.

  • "r"
    Der aufrufende Prozess kann die generierten Standardausgabe des Befehls mithilfe des zurückgegebenen Streams lesen.

  • "w"
    Der aufrufende Prozess kann zur generierten Standardeingabe des Befehls mithilfe des zurückgegebenen Streams schreiben.

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

  • "t"
    Öffnen Sie im Textmodus.

    HinweisHinweis

    Wenn sie in einem Windows-Programm verwendet wird, gibt die Funktion _popen einen ungültigen Dateizeiger zurück, der das Programm wird endlos, nicht mehr reagiert._popen funktioniert in einer Konsolenanwendung.Um eine Windows-Anwendung erstellt die Eingabe und Ausgabe umgeleitet wird, finden Sie unter Erstellen eines untergeordneten Prozesses mit umgeleiteter Eingabe und Ausgabe in Windows SDK.

_wpopen ist eine Breitzeichen-Version von _popen; das Pfad argument zu _wpopen ist eine Zeichenfolge mit Breitzeichen._wpopen und _popen verhalten sich andernfalls identisch.

Zuordnung generische 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 Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

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

Diese dieses wird davon ausgegangen, dass es nur eine Datei im aktuellen Verzeichnis mit Wechselstrom-Dateinamenerweiterung gibt.

 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. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Prozess- und Umgebungssteuerelement

_pclose

_pipe