Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

pipe - Pipe erzeugen

&pagelevel(4)&pagelevel

Definition

#include <unistd.h>

int pipe(int fildes[2]);

Beschreibung

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.

Returnwert

0

bei Erfolg

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

pipe() schlägt fehl, wenn gilt:

 

EMFILE

Für den Prozess sind derzeit bereits {OPEN_MAX} minus 2 Dateideskriptoren offen.

 

ENFILE

Die Anzahl der gleichzeitig geöffneten Dateien im System würde eine systemabhängige Grenze überschreiten.

Hinweis

pipe() wird nur für POSIX-Dateien ausgeführt.

Siehe auch

fcntl(), read(), write(), unistd.h.