pipe(2) pipe(2)
NAME
pipe - Interprozeß-Kommunikationskanal einrichten
SYNTAX
#include <unistd.h>
int pipe(int dk[2]);
BESCHREIBUNG
pipe() dient zum Einrichten eines als Pipe bezeichneten E/A-Mechanis-
mus und gibt zwei Dateideskriptoren zurück, dk[0] und dk[1]. Die mit
dk[0] und dk[1] verbundenen Dateien sind Streams und werden beide zum
Lesen und Schreiben geöffnet. Die Schalter ONDELAY und ONONBLOCK
werden gelöscht.
Das Einlesen von dk[0] greift auf die Daten zu, die gemäß dem FIFO-
Prinzip an dk[1] geschrieben wurden, während das Einlesen von dk[1]
auf jene Daten zugreift, die ebenfalls gemäß dem FIFO-Prinzip an dk[0]
geschrieben wurden. Es ist nicht definiert, ob fildes[0] auch zum
Schreiben und fildes[1] auch zum Lesen geöffnet wird.
Der Schalter FDCLOEXEC wird auf beiden Dateideskriptoren gelöscht.
Nach erfolgreicher Ausführung markiert pipe() die Felder statime,
stctime und stmtime auf der Pipe zur Aktualisierung.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
pipe() schlägt bei folgenden Bedingungen fehl:
EMFILE OPENMAX-1 oder mehr Dateideskriptoren sind zum gegebenen
Zeitpunkt für diesen Prozeß geöffnet.
ENFILE Der Dateitabelleneintrag konnte nicht zugewiesen werden.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben, und errno wird zur Anzeige des Fehlers gesetzt.
HINWEISE
Da eine Pipe bidirektional ist, gibt es zwei verschiedene Datenflüsse.
Deshalb ist die Größe (stsize), die durch einen Aufruf an fstat(2)
mit dem Argument dk[0] oder dk[1] beantwortet wurde, die Anzahl der
Bytes, die zum Lesen von dk[0] oder dk[1] zur Verfügung standen. Frü-
her war die Größe (stsize), die durch einen Aufruf an fstat() mit dem
Argument dk[1] (dem Schreibende) beantwortet wurde, die Anzahl der
Bytes, die zum Lesen von dk[0] (dem Leseende) zur Verfügung standen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
pipe(2) pipe(2)
SIEHE AUCH
sh(1), fcntl(2), getmsg(2), poll(2), putmsg(2), read(2), write(2),
unistd(4), streamio(7).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98