En informática , una tubería anónima es un canal de comunicación FIFO simple que se puede utilizar para la comunicación entre procesos unidireccional (IPC). A menudo, una implementación se integra en el subsistema de E/S de archivos del sistema operativo . Normalmente, un programa padre abre tuberías anónimas y crea un nuevo proceso que hereda los otros extremos de las tuberías, o crea varios procesos nuevos y los organiza en una tubería .
La comunicación full-duplex (bidireccional) normalmente requiere dos canales anónimos.
Las canalizaciones son compatibles con la mayoría de los sistemas operativos más populares, desde Unix y DOS en adelante, y se crean utilizando el |
carácter " " en muchos shells.
Las tuberías son una parte importante de muchas aplicaciones tradicionales de Unix y su compatibilidad está bien integrada en la mayoría de los sistemas operativos similares a Unix . Las tuberías se crean mediante la pipe
llamada al sistema , que crea una nueva tubería y devuelve un par de descriptores de archivo que hacen referencia a los extremos de lectura y escritura de la tubería. Muchos programas tradicionales de Unix están diseñados como filtros para trabajar con tuberías.
Al igual que muchas otras funciones de E/S e IPC de dispositivos en la API de Windows , las canalizaciones anónimas se crean y configuran con funciones de API que son específicas de la función de E/S. En este caso, CreatePipe
se utiliza para crear una canalización anónima con controladores separados para los extremos de lectura y escritura de la canalización. Las operaciones de E/S de lectura y escritura en la canalización se realizan con las funciones de API de la función de E/S estándar ReadFile
y WriteFile
.
En Microsoft Windows , las lecturas y escrituras en tuberías anónimas siempre son bloqueantes. [1] En otras palabras, una lectura desde una tubería vacía hará que el hilo que realiza la llamada espere hasta que haya al menos un byte disponible o se reciba un fin de archivo como resultado del cierre del controlador de escritura de la tubería. Del mismo modo, una escritura en una tubería llena hará que el hilo que realiza la llamada espere hasta que haya espacio disponible para almacenar los datos que se están escribiendo. Las lecturas pueden regresar con menos de la cantidad de bytes solicitada (también llamada lectura corta ).
Los nuevos procesos pueden heredar identificadores de tuberías anónimas en el proceso de creación.
Las operaciones de lectura y escritura asincrónicas (superpuestas) no son compatibles con las canalizaciones anónimas.