fifo - fichero especial "primero en entrar, primero en salir",
tubería con nombre
Un fichero especial FIFO (una tubería con nombre) es similar a una
tubería, salvo que se accede a él como parte del sistema de
ficheros. Puede ser abierto por múltiples procesos para lectura o
escritura. Cuando los procesos intercambian datos a través de la FIFO,
el núcleo pasa todos los datos internamente sin escribirlos en el
sistema de ficheros. Por tanto, el fichero especial FIFO no tiene contenido en
el sistema de ficheros, la entrada del sistema de ficheros simplemente sirve
como un punto de referencia de tal manera que los procesos puedan acceder a la
tubería usando un nombre del sistema de ficheros.
El núcleo mantiene exactamente un único objeto tubería para
cada fichero especial FIFO que es abierto por, al menos, un proceso. Se debe
abrir la FIFO en ambos extremos (de lectura y escritura) antes de que se
puedan pasar datos. Normalmente, la apertura de la FIFO se bloquea hasta que
el otro extremo también se abre.
Un proceso puede abrir una FIFO en modo no bloqueante. En este caso, abrir en
sólo lectura funcionará incluso si nadie ha abierto
todavía el lado de escritura. Abrir en sólo escritura
fallará con una
ENXIO (no existe tal dispositivo o
dirección) a menos que el otro extremo ya se haya abierto.
En Linux, abrir una FIFO para lectura y escritura tendrá éxito
tanto en modo bloqueante como no bloqueante. POSIX deja sin definir este
comportamiento. Esto se puede usar para abrir una FIFO para escribir mientras
no hay lectores disponibles. Un proceso que usa ambos extremos de la
conexión para comunicarse consigo mismo debería tener cuiado
para evitar bloqueos mortales.
Para ver más detalles del funcionamiento de E/S en los FIFO, consulte
pipe(7).
Cuando un proceso intenta escribir en una FIFO que no está abierta para
lectura en el otro lado, se le envía una señal
SIGPIPE.
Los archivos especiales FIFO se pueden crear con
mkfifo(3) y se indican
de manera especial en
ls -l con el tipo de archivo q]p'.
mkfifo(1),
open(2),
pipe(2),
sigaction(2),
signal(2),
socketpair(2),
mkfifo(3),
pipe(7)
La traducción al español de esta página del manual fue
creada por Juan Piernas <
[email protected]> y Marcos Fouces
<
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]