Provided by: manpages-de-dev_1.11-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(3) 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  mit popen() geöffneter
       Datenstrom von der Standardausgabe des Befehls, während die Standardeingabe dieselbe  ist,
       wie die des Prozesses, der popen() aufrief.

       Note that output popen()  streams are block buffered by default.

       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. Im Fehlerfall setzen diese Funktionen errno, um die  Ursache
       des Fehlers anzuzeigen.

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.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├──────────────────┼───────────────────────┼─────────┤
       │popen(), pclose() │ Multithread-Fähigkeit │ MT-Safe │
       └──────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008.

       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  4.04  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite 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>, Chris Leick <c.leick@vollbio.de> und Mario Blättermann
       <mario.blaettermann@gmail.com> 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>.