¿Cómo se implementa generalmente un "apretón de manos" con respecto a las canalizaciones con nombre?

StackOverflow https://stackoverflow.com/questions/1220499

Pregunta

Necesito implementar un protocolo de tipo protocolo de enlace en un pequeño programa de Linux que utiliza canalizaciones con nombre para comunicarse con otros procesos. He buscado un patrón de implementación general para un protocolo de tipo apretón de manos cuando uso tuberías con nombre, pero no he podido subir nada ...

Simplemente no puedo creer que no haya patrones para hacer esto. ¿Alguien puede señalarme un posible recurso?

En la divulgación completa esto es para la tarea, pero implementar este patrón no es la tarea. Necesitamos resolver un problema dentro del código de tarea y creo que esta es una posible solución. La tarea se implementa en C ++, pero los lenguajes no me importan. Simplemente no quiero reinventar la rueda ...

Actualización : Tengo la sensación de que esto podría implementarse con señales .

Lo que quiero decir con apretón de manos es que un proceso hijo informa a su proceso padre que está listo para trabajar pero no continúa (incluso si hay algo en el tubería) hasta que el padre da la señal de ir. En mi teoría de trabajo, tendré muchos procesos secundarios que deben informar listo y esperar la señal de salida del padre.

¿Fue útil?

Solución

En el uso típico , los procesos se basan en el bloqueo del apretón de manos. El proceso de escritura abre la tubería para escribir, el proceso del lector abre la tubería para leer, y lo que ocurra primero bloquea hasta que el otro proceso abra su lado. Esto se puede extender para usar IO sin bloqueo en el lado del lector.

Las canalizaciones con nombre son más útiles para IPC uno a uno. En su situación de uno a muchos, probablemente debería usar un socket de dominio UNIX en su lugar.

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