uso tuberias son que programacion por pipes los comunicacion bidireccionales c linux

son - tuberias bidireccionales en c



zócalo de dominio unix VS named pipes? (2)

Los sockets de dominio UNIX son generalmente más flexibles que los named pipes. Algunas de sus ventajas son:

  • Puede usarlos para más de dos procesos de comunicación (por ejemplo, un proceso de servidor con la conexión de procesos de cliente potencialmente múltiples);
  • Ellos son bidireccionales
  • Admiten pasar credenciales de UID / GID verificadas por el kernel entre los procesos;
  • Admiten pasar descriptores de archivos entre procesos;
  • Admiten paquetes y modos de paquetes secuenciados.

Para usar muchas de estas funciones, debe usar la familia de llamadas al sistema send() / recv() lugar de write() / read() .

Después de mirar un socket llamado Unix y pensé que se llamaban pipes. Miré los tubos de nombre y no vi mucha diferencia. Vi que se inicializaron de manera diferente, pero eso es lo único que noté. Ambos usan la función de escritura / lectura C y funcionan igual que AFAIK.

¿Cuál es la diferencia entre los sockets de dominio de Unix y los pipes con nombre? ¿Cuándo elegiría uno sobre el otro? ¿Qué debería usar de forma predeterminada (por ejemplo, cómo uso el uso del vector de forma predeterminada en C ++ que usar deque, list o cualquier otra cosa si tengo necesidades)?


Una diferencia es que las tuberías con nombre son unidireccionales, por lo que deberá usar dos de ellas para realizar una comunicación bidireccional. Los zócalos, por supuesto, son bidireccionales. Parece un poco más complicado usar dos variables en lugar de una (es decir, dos tubos en lugar de uno).

Además, el artículo de wikipedia es bastante claro en el siguiente punto : "Los sockets de dominio Unix se pueden crear como secuencias de bytes o como secuencias de datagramas, mientras que las tuberías solo son secuencias de bytes".