Provided by: manpages-de-dev_1.4-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.

       The  pclose()   function  returns -1 if wait4(2)  returns an error, or some other error is
       detected. In the event of an error, these functions set errno to indicate the cause of the
       error.

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

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       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>.