Tubería nombrada


En informática , una tubería con nombre (también conocida como FIFO por su comportamiento) es una extensión del concepto de tubería tradicional en sistemas Unix y similares a Unix, y es uno de los métodos de comunicación entre procesos (IPC). El concepto también se encuentra en OS / 2 y Microsoft Windows , aunque la semántica difiere sustancialmente. Una pipa tradicional es " sin nombre"y dura solo mientras el proceso. Sin embargo, una canalización con nombre puede durar mientras el sistema esté activo, más allá de la vida útil del proceso. Se puede eliminar si ya no se utiliza. Por lo general, una canalización con nombre aparece como un archivo y, en general, los procesos se adjuntan a él para IPC.

En lugar de una canalización de shell convencional, sin nombre, una canalización con nombre hace uso del sistema de archivos . Se crea explícitamente usando mkfifo()[1] o mknod(), [2] y dos procesos separados pueden acceder a la tubería por su nombre: un proceso puede abrirlo como lector y el otro como escritor.

Una canalización con nombre se puede utilizar para transferir información de una aplicación a otra sin el uso de un archivo temporal intermedio. Por ejemplo, puede canalizar la salida de gzip a una canalización con nombre así:

Sin esta tubería con nombre, uno necesitaría escribir la versión completa sin comprimir de file.gz antes de cargarla en MySQL. Escribir el archivo temporal lleva mucho tiempo y da como resultado más E / S y menos espacio libre en el disco duro.

Se puede acceder a una tubería con nombre de forma muy similar a un archivo. Las funciones del SDK de Win32CreateFile , y abren ReadFile, leen, escriben y cierran una tubería, respectivamente. A diferencia de Unix, no hay una interfaz de línea de comandos , excepto PowerShell .WriteFileCloseHandle

Las canalizaciones con nombre no se pueden crear como archivos dentro de un sistema de archivos normal, a diferencia de Unix. Además, a diferencia de sus contrapartes de Unix, las canalizaciones con nombre son volátiles (se eliminan después de que se cierra la última referencia a ellas). Cada tubería se coloca en el directorio raíz del sistema de archivos de tubería con nombre (NPFS), montado bajo la ruta especial \\.\pipe\(es decir, una tubería llamada " foo " tendría un nombre de ruta completo de \\.\pipe\foo). Las canalizaciones anónimas utilizadas en la canalización en realidad se denominan canalizaciones con un nombre aleatorio.