Provided by:
manpages-de_0.5-4.1ubuntu1_all 
BEZEICHNUNG
fifo - Spezialdatei, Named Pipe, "first-in first-out"
BESCHREIBUNG
Ein FIFO, auch "Named Pipe" genannt, ist mit einer Pipe vergleichbar.
Er wird jedoch im Unterschied zur Pipe nicht direkt zum Austausch
zwischen Programmen verwendet, sondern ist als Eintrag im Dateisystem
sichtbar.
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 hält als Datei somit keine
Daten. Der Eintrag im Dateisystem dient als benannter Bezugspunkt
(daher Named Pipe), auf den Prozesse 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 FIFO so lange
blockiert, bis auch das andere Ende geöffnet ist.
Ein FIFO kann vom Prozess auch non-blocking geöffnet werden. Das
Öffnen des FIFO zum Lesen funktioniert dann auch, 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 beiden
Modi, blocking und non-blocking, 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 FIFO öffnet, um mit sich selbst zu
kommunizieren, sollte darauf geachtet werden, dass es nicht zu
Stockungen in der Kommunikation kommt.
ANMERKUNGEN
Versucht ein Prozess in einen FIFO zu schreiben, der nicht von anderer
Seite zum Lesen geöffnet ist, erhält er vom Kernel das Signal SIGPIPE.
FIFOs werden mit mkfifo(3) angelegt und können mit ls -l oder file
identifiziert werden.
SIEHE AUCH
mkfifo(3), mkfifo(1), pipe(2), socketpair(2), open(2), signal(2),
sigaction(2).