¿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.
¿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.
Casi cualquier forma en que dos procesos se comuniquen entre sí podría considerarse una forma de IPC.
Por ejemplo:
IPC significa interprocesos de comunicaciones. sockets de dominio UNIX y canalizaciones con nombre son sólo dos mecanismos IPC, que se describe en Wikipedia:
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.
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.
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
espero que se actualice bien. –
Ese hilo parece llamar más la atención: http://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes – schmijos