Hauptindex | Abschnitt 3 | English | 日本語 | Optionen |
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
Das Argument command ist ein Zeiger auf einen mit NULL beendeten String, der ein Shell-Kommandozeile enthält. Dieses Kommando wird an -c -Flag an /bin/sh übergeben; Interpretation, falls nötig, wird von der Shell durchgeführt. Das Argument mode ist ein Zeiger auf einen mit NULL beendeten String, der entweder `r' für Lesen oder `w' für Schreiben sein muß.
Der Rückgabewert von popen() ist ein normaler Standard-E/A-Datenkanal in jeder Hinsicht, trotzdem muß er mit pclose(), nicht mit fclose() geschlossen werden. Schreiben in solch einen Datenkanal bewirkt Schreiben in die Standardeingabe des Kommandos; die Standardausgabe der Kommandos ist die des Prozesses, der popen(), aufgerufen hat, wenn dies nicht vom Programm selbst geändert wird. Umgekehrt lesen mit popen geöffnete Kanäle von der Standardausgabe des Programms während die die Standardeingabe dieselbe des aufrufenden Programms ist.
Beachten Sie, daß Ausgabe- popen()-Kanäle nach Voreinstellung voll gepuffert sind.
Die Funktion pclose() wartet bis der zugehörige Prozess beendet ist und gibt den Rückgabewert des Kommandos wie von wait4() geliefert, zurück.
Die Funktion pclose() gibt -1 zurück wenn stream nicht mit einem durch ``popen'' erzeugten Datenkanal verbunden werden kann, wenn stream bereits mit ``pclose'' geschlossen wurde, oder wenn wait4 () einen Fehler zurückliefert.
Fehler, die Shell aufzurufen, kann nicht unterschieden werden von Fehler der Shell, das Programm aufzurufen, oder einem sofortigen Ende des Programms. Einziger Hinweis ist ein Rückgabewert von 127. (Gilt das unter Linux?)
Die Funktion popen() ruft immer sh, nicht csh auf.
17. Mai 1996 | POPEN (3) | BSD |
Hauptindex | Abschnitt 3 | English | 日本語 | Optionen |
Bitte richten Sie Ihre Kommentare zu diesem Handbuch Seite Service, Ben Bullock. Privacy policy.
“ | The number of UNIX installations has grown to 10, with more expected. | ” |
— UNIX Programming Manual, 1972 |