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>.

GNU                                              19. April 2013                                         POPEN(3)