_popen, _wpopen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

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

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

Beschreibung

Erstellt eine Pipe für den Befehlsinterpreter.

Die Funktion _popen erstellt eine Pipe für den Befehlsinterpreter. Der Befehlsinterpreter wird asynchron ausgeführt. Die Befehlszeile wird ihm im Parameter command übergeben. Der String mode gibt an, ob die Pipe mit der Standardeingabe/-ausgabe des Befehlsinterpreters verbunden ist und ob die Pipe im Binär- oder im Textmodus geöffnet wird.

Der String mode kann einen der folgenden Werte annehmen:

rt Standardausgabe des untergeordneten Befehls lesen (Textmodus). rb Standardausgabe des untergeordneten Befehls lesen (Binärmodus). wt In Standardeingabe des untergeordneten Befehls schreiben (Textmodus). wb In Standardeingabe des untergeordneten Befehls schreiben (Binärmodus).



Die abschließenden Zeichen t oder b sind optional; fehlen sie, dann bestimmt die externe Variable _fmode den Konvertierungsmodus.

Verwenden Sie die Funktion _pclose, um die Pipe zu schließen und den Rückgabewert des Befehls zu erhalten.

Rückgabewert

Bei erfolgreicher Ausführung gibt _popen einen FILE-Zeiger zurück, mit dessen Hilfe Sie, abhängig vom Wert des Strings mode, die Standardausgabe des Befehls lesen oder in dessen Standardeingabe schreiben können.

Bei einem Fehler wird NULL zurückgegeben.

Beispiel



 /* Dieses Programm initialisiert einen untergeordneten Prozess, um den Befehl 'dir' auszuführen
    und die Dateiliste vom untergeordneten an den übergeordneten Prozess zu leiten.
 */
 #include <stdio.h>     // popen() pclose() feof() fgets() puts()
 #include <string.h>    // strlen()
 int main( )
 {
   FILE* handle;        // Handle für das eine Ende der Pipe
   char message[256];   // Puffer für den durch die Pipe geleiteten Text
   int status;          // Rückgabewert der Funktion
   // Eine Pipe öffnen, um Text von dem Prozess zu empfangen, der "DIR" ausführt
   handle = _popen("dir /b", "rt");
   if (handle == NULL)
   {
     perror("_popen error");
   }
   // Ausgabe des untergeordeneten Prozesses lesen und anzeigen
   while (fgets(message, sizeof(message), handle))
   {
     fprintf(stdout, message);
   }
   // Pipe schließen und Rückgabewert prüfen
     status = _pclose(handle);
   if (status == -1)
   {
     perror("_pclose error");
   }
   return(0);
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

_popen

+

_wpopen

Nur NT