BEZEICHNUNG¶
fifo - »first-in-first-out«-Spezialdatei (named pipe)
BESCHREIBUNG¶
Eine FIFO-Spezialdatei (eine benannte Pipe) ähnelt einer Pipeline. Auf Sie
wird aber als Teil des Dateisystems zugegriffen. Auf den FIFO kann von
mehreren Prozessen lesend oder schreibend zugegriffen werden. Wenn die
Prozesse über den FIFO Daten austauschen, werden die Daten vom Kernel
intern weitergegeben, ohne tatsächlich im Dateisystem gespeichert zu
werden. Der FIFO enthält als Datei somit keine Daten. Der Eintrag im
Dateisystem dient als Bezugspunkt, auf den Prozesse über einen Namen im
Dateisystem zugreifen können.
Der Kernel verwaltet genau ein Pipe-Objekt für jeden FIFO, der von
wenigstens einem Prozess zum Lesen oder Schreiben geöffnet ist. Damit
Daten durch den FIFO transportiert werden können, muss der FIFO von
beiden Enden geöffnet sein, einmal lesend und einmal schreibend. Im
Normalfall wird die Verarbeitung nach dem Öffnen des FIFOs so lange
blockiert, bis auch das andere Ende geöffnet ist.
Ein FIFO kann vom Prozess auch nicht blockierend geöffnet werden. In diesem
Fall funktioniert das Öffnen des FIFOs zum Lesen auch dann, wenn er noch
von keinem anderen Prozess zum Schreiben geöffnet wurde. Das Öffnen
zum Schreiben bricht mit
ENXIO (Datei oder Adresse nicht gefunden) ab,
wenn nicht bereits ein anderer Prozess den FIFO zum Lesen geöffnet hat.
Unter LINUX können FIFOs sowohl lesend als auch schreibend in den beiden
Modi blockierend und nicht blockierend geöffnet werden. Gemäß
POSIX ist dafür kein Verfahren definiert. Dadurch kann ein FIFO zum
Schreiben geöffnet werden, ohne dass lesende Prozesse vorhanden sind.
Falls ein Prozess beide Seiten eines FIFOs öffnet, um mit sich selbst zu
kommunizieren, sollte er sorgfältig auf die Vermeidung von Deadlocks
(Verklemmungen) achten.
ANMERKUNGEN¶
Versucht ein Prozess in einen FIFO zu schreiben, der nicht auf der anderen Seite
zum Lesen geöffnet ist, erhält er vom Kernel das Signal
SIGPIPE.
FIFOs werden mit
mkfifo(3) angelegt. In der Ausgabe von
ls -l ist
ihr Dateityp 'p'.
SIEHE AUCH¶
mkfifo(1),
open(2),
pipe(2),
sigaction(2),
signal(2),
socketpair(2),
mkfifo(3),
pipe(7)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schmitt
<martin@schmitt.li> und Martin Eberhard Schauer
<Martin.E.Schauer@gmx.de> 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>.