Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       popen, pclose - Datenstrom von oder zu einem Prozess weiterleiten

ÜBERSICHT

       #include <stdio.h>

       FILE *popen(const char *befehl, const char *typ);

       int pclose(FILE *datenstrom);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       popen(), pclose():
           _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE || _BSD_SOURCE ||
           _SVID_SOURCE

BESCHREIBUNG

       Die Funktion popen() öffnet einen Prozess dadurch, dass sie  sich  nach
       Erzeugen  einer  Weiterleitung aufteilt und eine Shell aufruft. Da eine
       Weiterleitung nach Definition in eine Richtung läuft, darf das Argument
       typ  nur  Lesen oder Schreiben angeben, nicht beides; der resultierende
       Datenstrom ist demzufolge nur-lesend oder nur-schreibend.

       Das  Argument  befehl  ist  ein  Zeiger  auf  eine  mit  Null  beendete
       Zeichenkette,  die  eine Shell-Befehlszeile enthält. Dieser Befehl wird
       mit dem Schalter -c an /bin/sh übergeben; Falls nötig, wird er von  der
       Shell  interpretiert. Das Argument typ ist ein Zeiger auf eine mit Null
       beendete  Zeichenkette,  die  entweder  »r«  für  Lesen  oder  »w«  für
       Schreiben   enthalten   muss.  Seit  Glibc  2.9  kann  dieses  Argument
       zusätzlich den Buchstaben »e« beinhalten, der veranlasst, dass für  den
       zugrundeliegenden    Dateideskriptor   der   Schalter   »close-on-exec«
       (FD_CLOEXEC) gesetzt wird. Lesen Sie  die  Beschreibung  des  Schalters
       O_CLOEXEC in open(2), um zu erfahren, warum dies nützlich sein könnte.

       Der  Rückgabewert  von  popen()  ist  in  jeder  Hinsicht  ein normaler
       Standard-E/A-Datenstrom, trotzdem  muss  er  mit  pclose(),  nicht  mit
       fclose()  geschlossen  werden.  Schreiben  in  solch  einen  Datenstrom
       bewirkt, dass in die Standardeingabe des Befehls geschrieben wird;  die
       Standardausgabe   des  Befehls  ist  die  des  Prozesses,  der  popen()
       aufgerufen hat, wenn  dies  nicht  vom  Befehl  selbst  geändert  wird.
       Umgekehrt   liest   ein   mitpopen()   geöffneter  Datenstrom  von  der
       Standardausgabe des Befehls, während die Standardeingabe dieselbe  ist,
       wie die des Prozesses, der popen() aufrief.

       Beachten Sie, dass popen()-Ausgabedatenströme standardmäßig vollständig
       gepuffert sind.

       Die Funktion pclose() wartet bis der zugehörige Prozess beendet ist und
       gibt den Exit-Status des Befehls, wie von wait4(2) geliefert, zurück.

RÜCKGABEWERT

       Die  Funktion  popen()  gibt NULL zurück, wenn die Aufrufe fork(2) oder
       pipe(2) fehlschlagen oder wenn kein Speicher reserviert werden kann.

       Die Funktion pclose()  gibt  -1  zurück,  wenn  wait4(2)  einen  Fehler
       zurückgibt oder ein anderer Fehler entdeckt wird.

FEHLER

       Die  Funktion  popen() setzt errno nicht, wenn die Speicherreservierung
       fehlschlägt.  Falls   das   zugrundeliegende   fork(2)   oder   pipe(2)
       fehlschlägt,  wird  errno  entsprechend gesetzt. Falls das Argument typ
       ungültig ist, wird errno auf EINVAL gesetzt.

       Falls pclose() den Status des Kindprozesses  nicht abfragen kann,  wird
       errno auf ECHILD gesetzt.

KONFORM ZU

       POSIX.1-2001.

       Der Wer »e« für typ ist eine Linux-Erweiterung.

FEHLER

       Da   die  zum  Lesen  geöffnete  Standardeingabe  eines  Befehls  ihren
       Suchindex mit dem Prozess teilt, der popen() aufgerufen  hat,  kann  es
       vorkommen, dass die Eingabeposition des Befehls nicht wie erwartet ist.
       Ebenso könnte die Ausgabe eines zum Schreiben  geöffneten  Befehls  mit
       der   des  Originalprozesses  gemischt  werden.  Letzteres  kann  durch
       aufrufen von fflush(3) vor popen() vermieden werden.

       Das Fehlschlagen des Shellaufzurufs kann nicht vom Fehlschlagein  eines
       Befehls,  der von der Shell ausgeführt wurde oder einem sofortigen Ende
       des Befehls, unterschieden werden. Einziger Hinweis ist ein Exit-Status
       von 127.

SIEHE AUCH

       sh(1),  fork(2),  pipe(2),  wait4(2),  fclose(3),  fflush(3), fopen(3),
       stdio(3), system(3)

KOLOPHON

       Diese  Seite  ist  Teil  der   Veröffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     können,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
       <krd@gulu.net>, Martin  Schulze  <joey@infodrom.org>  und  Chris  Leick
       <c.leick@vollbio.de> erstellt.

       Diese  Übersetzung  ist  Freie Dokumentation; lesen Sie die GNU General
       Public  License  Version  3  oder  neuer   bezüglich   der   Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der  Übersetzung  dieser  Handbuchseite  finden,
       schicken     Sie     bitte     eine     E-Mail     an     <debian-l10n-
       german@lists.debian.org>.