En informática , una tubería anónima es un canal de comunicación FIFO simplex que se puede utilizar para la comunicación entre procesos (IPC) unidireccional . A menudo, una implementación se integra en el subsistema de E / S de archivos del sistema operativo . Normalmente, un programa padre abre conductos anónimos y crea un nuevo proceso que hereda los otros extremos de los conductos, o crea varios procesos nuevos y los organiza en un conducto .
La comunicación full-duplex (bidireccional) normalmente requiere dos conductos anónimos.
Las canalizaciones son compatibles con los sistemas operativos más populares, desde Unix y DOS en adelante, y se crean utilizando el carácter " |
" en muchos shells.
Unix
Las canalizaciones son una parte importante de muchas aplicaciones tradicionales de Unix y su soporte está bien integrado en la mayoría de los sistemas operativos similares a Unix. Las canalizaciones se crean utilizando la pipe
llamada al sistema , que crea una nueva canalización y devuelve un par de descriptores de archivo que se refieren a los extremos de lectura y escritura de la canalización. Muchos programas tradicionales de Unix están diseñados como filtros para trabajar con tuberías.
Microsoft Windows
Como muchas otras funciones de IO 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 IO. En este caso, CreatePipe
se utiliza para crear una tubería anónima con identificadores separados para los extremos de lectura y escritura de la tubería. Las operaciones de lectura y escritura de E / S en la tubería se realizan con las funciones API estándar de la instalación de E / S ReadFile
y WriteFile
.
En Microsoft Windows , las lecturas y escrituras en conductos anónimos siempre se bloquean. [1] En otras palabras, una lectura de una tubería vacía hará que el hilo de llamada espere hasta que al menos un byte esté disponible o se reciba un final de archivo como resultado del cierre del identificador de escritura de la tubería. Del mismo modo, una escritura en una tubería completa hará que el hilo de llamada espere hasta que haya espacio disponible para almacenar los datos que se están escribiendo. Las lecturas pueden regresar con menos bytes que el número solicitado (también llamado lectura corta ).
Los nuevos procesos pueden heredar identificadores a conductos anónimos en el proceso de creación.
Ver también
Referencias
- Hart, Johnson M. Programación del sistema de Windows, tercera edición. Addison-Wesley, 2005. ISBN 0-321-25619-0
- "pipe (7) - página de manual de Linux" . Archivado desde el original el 23 de marzo de 2010 . Consultado el 27 de febrero de 2010 .
Notas
- ^ "Operaciones de tuberías anónimas" . MSDN . Consultado el 27 de febrero de 2010 .
Las operaciones de lectura y escritura asincrónicas (superpuestas) no son compatibles con canalizaciones anónimas.