Descripción general
`mkfifo` crea una tubería con nombre, un archivo especial, en el sistema de archivos. Esta tubería actúa como un canal de comunicación que permite que dos o más procesos independientes envíen y reciban datos. Cuando un proceso escribe datos en la tubería, otro proceso puede leerlos, y los datos se procesan en un orden de primero en entrar, primero en salir (FIFO).
Características principales
- Existe en el sistema de archivos y se puede acceder a él mediante una ruta
- Proporciona un canal de comunicación entre procesos independientes
- Los datos se procesan en orden de primero en entrar, primero en salir (FIFO)
- Útil para construir canalizaciones complejas en scripts de shell
Opciones principales
El comando `mkfifo` se utiliza principalmente con rutas de archivo como argumentos y admite algunas opciones básicas.
Opciones de creación
Comando generado:
Combina los comandos.
Descripción:
`mkfifo` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Se muestra cómo crear una tubería con nombre usando `mkfifo` y cómo se utiliza para la comunicación entre procesos.
Crear una tubería con nombre básica
mkfifo my_pipe
Crea una tubería llamada `my_pipe` en el directorio actual.
Crear una tubería con permisos específicos
mkfifo -m 600 my_private_pipe
Crea `my_private_pipe` donde solo el propietario puede leer y escribir.
Transferencia de datos usando una tubería con nombre
mkfifo data_channel
echo "Hello from Terminal 1!" > data_channel &
cat < data_channel
Ejemplo de escritura de datos en una terminal y lectura en otra. **Terminal 1:** `mkfifo data_channel` `echo "Hello from Terminal 1!" > data_channel` **Terminal 2:** `cat < data_channel`
Uso de tuberías con procesos en segundo plano
mkfifo background_output
(ls -l; sleep 2; echo "Done listing") > background_output &
cat < background_output
Transfiere la salida de un proceso que se ejecuta en segundo plano a otro comando a través de una tubería.
Consejos y precauciones
Puntos a tener en cuenta y consejos para usar tuberías con nombre.
Eliminación de tuberías
Las tuberías con nombre se pueden eliminar con el comando `rm`, al igual que los archivos normales. Es recomendable limpiar las tuberías innecesarias después de su uso.
- `rm my_pipe`
Comportamiento de bloqueo (Blocking)
Las tuberías con nombre se comportan de forma bloqueante por defecto. Esto significa que si un lado intenta escribir (o leer), esperará hasta que el otro lado comience a leer (o escribir). Para evitar este comportamiento, ejecútelo en segundo plano con `cat < my_pipe &` o ábralo en modo no bloqueante usando la bandera `O_NONBLOCK`.
Uso de sistemas de archivos temporales
Para tuberías de uso temporal, se recomienda utilizar el directorio `/tmp` o el comando `mktemp` para crear tuberías con nombres únicos. Esto evita conflictos de nombres y garantiza que se limpien automáticamente tras el reinicio del sistema.