Las tuberías con nombre (fifo) tienen cuatro tres ventajas que se me ocurren:
(Actualizado, gracias a los comentarios de Stephane Chazelas )
Entonces, una tarea inmediatamente obvia que no puede lograr con una tubería sin nombre es una aplicación cliente / servidor convencional.
El último punto (marcado) sobre las tuberías unidireccionales es relevante en Linux, POSIX (ver popen()
) dice que una tubería solo necesita ser legible o escribible , en Linux son unidireccionales . Consulte Comprender el kernel de Linux (3ª Ed. O'Reilly) para obtener detalles específicos de Linux (p787). Otros sistemas operativos ofrecen tuberías bidireccionales (sin nombre).
Como ejemplo, Nagios usa un fifo para su archivo de comando . Varios procesos externos (scripts CGI, comprobaciones externas, NRPE, etc.) escriben comandos / actualizaciones en este Fifo y estos son procesados por el proceso persistente de Nagios.
Las canalizaciones con nombre tienen características similares a las conexiones TCP, pero existen diferencias importantes. Debido a que un Fifo tiene un nombre de sistema de archivos persistente, puede escribir en él incluso cuando no hay lector, es cierto que las escrituras se bloquearán (sin E / S asíncrona o sin bloqueo), aunque no perderá datos si el receptor no está iniciado (o se está reiniciando).
Como referencia, consulte también los sockets de dominio de Unix y la respuesta a esta pregunta de Stackoverflow que resume los principales métodos de IPC , y este que habla sobrepopen()