2009-09-12 23 views
7

¿Cuál es la diferencia entre IPC y sockets de dominio Unix y named pipes?IPC vs sock de dominio vs named pipes

Recibí definiciones vagas de varios libros pero no pude obtener claridad sobre cuál debería usarse.

+0

Ese hilo parece llamar más la atención: http://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes – schmijos

Respuesta

6

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

Por ejemplo:

  1. Tubos sin nombre (archivo.txt gato | grep foo) o Named Pipes
  2. sockets de dominio Unix
  3. TCP o UDP sockets
  4. Netlink Sockets on Linux
  5. mecanismos de memoria compartida Varios como archivos asignados de memoria
  6. Pasar mensaje de alta velocidad como ZeroMQ
4

IPC significa interprocesos de comunicaciones. sockets de dominio UNIX y canalizaciones con nombre son sólo dos mecanismos IPC, que se describe en Wikipedia:

6

Como qrdl declaró, sockets de dominio UNIX y canalizaciones con nombre son ambos mecanismos IPC.

De estos dos, los tubos con nombre son más fáciles de trabajar, pero mucho menos flexibles que los zócalos 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 obligatorios; si espera que el proceso de lectura se detenga y comience durante la ejecución del proceso de escritura, necesitará los sockets de dominio UNIX.

0

Gracias para enfocar a la pregunta, algunas de sus funciones actualizadas:

en los zócalos de dominio, la comunicación real (el intercambio de datos) no utiliza el sistema de archivos, pero buffers en la memoria del núcleo. Por defecto, es el modo dúplex completo.

Las tuberías con nombre se identifican por su punto de acceso, un archivo guardado en el sistema de archivos para manejar los datos. Una tubería con nombre admite de forma predeterminada operaciones de lectura y escritura bloqueadas. Sin embargo, es posible hacer que las canalizaciones con nombre admitan operaciones sin bloqueo especificando la bandera O_NONBLOCK al abrirlas. Una tubería con nombre debe abrirse solo de lectura o solo escritura. No debe abrirse para lectura-escritura porque es semidúplex, un canal unidireccional.

+2

OP preguntó acerca de los sockets de dominio. Los sockets de dominio generalmente se implementan sobre las tuberías, por lo que son tan rápidos como las tuberías. Los sockets de dominio son útiles ya que tienen exactamente la misma interfaz que los sockets de red (solo una familia de sockets diferente) así que si tu aplicación admite sockets y encuentras que ambas partes están ubicadas en la misma computadora, puedes cambiar fácilmente a sockets de dominio para acelerar (X Windows lo hace). Entonces tu respuesta es incorrecta. – qrdl

+0

espero que se actualice bien. –

Cuestiones relacionadas