uso tuberias son que programacion por pipes los comunicacion bidireccionales language-agnostic ipc pipe named-pipes

language agnostic - tuberias - ¿Cuáles son las diferencias entre las tuberías en Windows y Linux?



tuberias bidireccionales en c (4)

Una diferencia que conozco es que los conductos con nombre en Linux son entradas reales en el sistema de archivos (lo verán en una lista de directorios, tienen un tipo especial), mientras que en Windows están almacenados en algún depósito mágico en algún lugar ( se accede a todos a través de la ruta "//. / pipe /".

En segundo lugar, en Linux puede simplemente escribir / leer de las tuberías como si se tratara de cualquier otro archivo, utilizando los métodos de IO de archivos estándar. Mientras que en Windows, debe usar las funciones especiales ''Pipe'' que forman parte de la API de Win32.

Me gusta mejor el método de Linux, porque me permite usar pipes con cualquier aplicación que quiera. P.ej:

mkfifo pipe.wav decodeMP3 song.mp3 --out pipe.wav & encodeAVI video.mpeg pipe.wav --out video.avi

Esto me permite canalizar la salida del decodificador de MP3 directamente al decodificador de video, en lugar de tener que decodificar primero todo el MP3 en un archivo WAV en el disco. Es útil si tienes una CPU de doble núcleo, porque entonces estás ejecutando ambas operaciones a la vez, para una agradable aceleración.

¿Cuáles son las diferencias entre las tuberías en Windows y Linux?


En Linux (y * ix en general), "todo es un archivo". Puede leer / escribir / buscar tuberías y tomas de corriente y dispositivos sin restricciones, en la medida en que esas operaciones tengan sentido.

Mientras que Windows tiene una arquitectura mucho menos unificada para estos diferentes tipos de objetos. Aunque no pude decirle los detalles, sé que el almacenamiento en búfer de las tuberías es considerablemente diferente entre Windows y Linux, por lo que puede encontrarse con dificultades allí.

Además, un uso común de Unix-y de tuberías es fork() un subproceso y luego comunicarse con él a través de una tubería (el padre abre un extremo, el niño abre el otro extremo). En Windows, ese tipo de cosas simplemente no es posible. Los mecanismos de IPC son bastante diferentes.


Otra diferencia importante

Debajo de windows

A | B | C

Hasta que A termina con su salida B no comienza a leer, Lo mismo ocurre con la salida B que lee C

* nix engancha la entrada y la salida juntas para que C pueda leer la salida de B y B pueda leer la salida de A mientras que A y B siguen ejecutándose

El rendimiento es aproximadamente el mismo, pero la salida se muestra más rápido con * nix.