Named Pipes sind den normalen Pipes sehr ähnlich. Sie haben jedoch einen entscheidenden Vorteil: hiermit kann eine schon existierende Pipe von beliebigen Prozessen genutzt werden. Bei normalen Pipes müssen dazu die Prozesse vom selben Elternprozess abstammen (um an die Dateideskriptoren ranzukommen).
Man kann eine Named Pipe mit dem Befehl
Um das Beispiel von oben mit Named Pipes umzusetzen tut man folgendes (fifo ist die zuvor angelegte Named Pipe):
Im Gegensatz zu normalen Pipes wo in einem Schritt die Pipe erzeugt wird (ein inode Objekt, zwei file Objekte und die Speicherseite) und gleich zum Lesen und Schreiben geöffnet ist, werden Named Pipes von den Prozessen im Userspace geöffnet und geschlossen. Dabei beachtet Linux, dass es möglich ist, dass eine Pipe zum Lesen geöffnet wird bevor etwas hineingeschrieben wurde, sowie dass eine Pipe zum Schreiben geöffnet wird bevor sie auch zum Lesen geöffnet wurde.
Zum Anlegen einer Named Pipe bedient man sich des mknod() Systemaufrufs. Auf Kernelebene passiert dort das gleiche bei beim erzeugen einer Device Datei.
Das Lesen und Schreiben auf eine Named Pipe funktioniert auf die gleiche Weise wie bei normalen Pipes mit den Systemaufrufen read() und write() bzw. auf Kernelebene mit den Funktionen pipe_read() und pipe_write().
Obwohl es auch hier es möglich ist, dass mehrere Prozesse die selbe Named Pipe benutzen, können Daten nur in 1:1 Beziehungen ausgetauscht werden. D.h. Daten die ein Prozess in die Pipe schreibt können nur von einem Prozess gelesen werden.