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

BEZEICHNUNG

       popen, pclose - Datenstrom von oder zu einem Prozess weiterleiten

"UBERSICHT

       #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() offnet einen Prozess dadurch, dass sie  sich  nach
       Erzeugen  einer  Weiterleitung aufteilt und eine Shell aufruft. Da eine
       Weiterleitung nach Definition in eine Richtung lauft, 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 enthalt. Dieser Befehl wird
       mit dem Schalter -c an /bin/sh ubergeben; Falls notig, wird er von  der
       Shell  interpretiert. Das Argument typ ist ein Zeiger auf eine mit Null
       beendete Zeichenkette, die entweder >>r<<  fur  Lesen  oder  >>w<<  fur
       Schreiben   enthalten   muss.  Seit  Glibc  2.9  kann  dieses  Argument
       zusatzlich den Buchstaben >>e<< beinhalten, der  veranlasst,  dass  fur
       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 nutzlich sein konnte.

       Der  Ruckgabewert  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  geandert  wird.
       Umgekehrt   liest   ein   mitpopen()   geoffneter  Datenstrom  von  der
       Standardausgabe des Befehls, wahrend die Standardeingabe dieselbe  ist,
       wie die des Prozesses, der popen() aufrief.

       Beachten Sie, dass popen()-Ausgabedatenstrome standardmaBig vollstandig
       gepuffert sind.

       Die Funktion pclose() wartet bis der zugehorige Prozess beendet ist und
       gibt den Exit-Status des Befehls, wie von wait4(2) geliefert, zuruck.

R"UCKGABEWERT

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

       Die Funktion pclose()  gibt  -1  zuruck,  wenn  wait4(2)  einen  Fehler
       zuruckgibt oder ein anderer Fehler entdeckt wird.

FEHLER

       Die  Funktion  popen() setzt errno nicht, wenn die Speicherreservierung
       fehlschlagt.  Falls   das   zugrundeliegende   fork(2)   oder   pipe(2)
       fehlschlagt,  wird  errno  entsprechend gesetzt. Falls das Argument typ
       ungultig 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<< fur typ ist eine Linux-Erweiterung.

FEHLER

       Da   die  zum  Lesen  geoffnete  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 konnte die Ausgabe eines zum Schreiben  geoffneten  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 ausgefuhrt 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   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

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

       Diese  Ubersetzung  ist  Freie Dokumentation; lesen Sie die GNU General
       Public  License  Version  3  oder  neuer   bezuglich   der   Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

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