pipe() erzeugt eine Pipe und trägt zwei Dateideskriptoren, die auf die offenen Dateibeschreibungen für die Lese- bzw. Schreibseite der Datei verweisen, in die Argumente fildes [0] und fildes [1] ein. Diese beiden ganzzahligen Werte sind die beiden zum Zeitpunkt des Aufrufs von pipe() niedrigsten verfügbaren. Das Bit O_NONBLOCK ist für keine der beiden Dateideskriptoren gesetzt (fcntl() kann verwendet werden, um das Bit O_NONBLOCK zu setzen).
Daten können dann über den Dateideskriptor fildes [1] geschrieben und über den Dateideskriptor fildes [0] gelesen werden. Ein Lesevorgang über fildes [0] greift auf die Daten zu, die über fildes [1] geschrieben wurden, und zwar nach der Methode first-in-first-out. Ein Prozess hat die Pipe zum Lesen geöffnet, wenn er den Dateideskriptor besitzt, der auf die Leseseite der Pipe verweist, d.h. fildes [0] (entsprechend zum Schreiben bei der Schreibseite, d.h. fildes [1] ). Bei erfolgreicher Beendigung aktualisiert pipe() die stat -Strukturkomponenten st_ati-me , st_ctime und st_mtime der Pipe. Das Bit FD_CLOEXEC ist für keine der beiden Dateideskriptoren gesetzt. |