Pregunta

¿Cuál es la diferencia entre los sockets de dominio IPC y Unix y las canalizaciones con nombre?

Obtuve definiciones vagas de varios libros, pero no pude aclarar cuál debería usarse y dónde.

¿Fue útil?

Solución

Casi cualquier forma en que dos procesos se comuniquen entre sí podría considerarse una forma de IPC.

Por ejemplo:

  1. Tuberías sin nombre (cat file.txt | grep foo) o Tuberías con nombre
  2. Sockets de dominio Unix
  3. sockets TCP o UDP
  4. Netlink Sockets en Linux
  5. Varios mecanismos de memoria compartida, como archivos de memoria asignados
  6. Pases de mensajes de alta velocidad como ZeroMQ

Otros consejos

Como se indicó qrdl, los sockets de dominio UNIX y las canalizaciones con nombre son mecanismos de IPC.

De estos dos, las canalizaciones con nombre son más simples de trabajar, pero mucho menos flexibles que los sockets de dominio UNIX. Por ejemplo, si potencialmente espera más de un proceso de lectura para cada proceso de escritura, entonces los sockets de dominio UNIX son imprescindibles; si espera que el proceso de lectura se detenga y comience durante la ejecución del proceso de escritura, necesitará sockets de dominio UNIX.

IPC significa Comunicaciones entre procesos . Los sockets de dominio UNIX y las canalizaciones con nombre son solo dos mecanismos de IPC, descritos en Wikipedia:

Gracias por centrarse en la pregunta, algunas características actualizadas:

En los zócalos de dominio, la comunicación real (el intercambio de datos) no utiliza el sistema de archivos, sino que se almacena en la memoria del núcleo. Por defecto, es el modo full-duplex.

Las canalizaciones con nombre se identifican por su punto de acceso, un archivo que se mantiene en el sistema de archivos para manejar los datos. Una canalización con nombre por defecto admite operaciones bloqueadas de lectura y escritura. Sin embargo, es posible hacer que las canalizaciones con nombre admitan operaciones sin bloqueo especificando el indicador O_NONBLOCK al abrirlas. Una canalización con nombre debe abrirse como de solo lectura o de solo escritura. No debe abrirse para lectura-escritura porque es half-duplex, un canal unidireccional.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top