2009-08-31 16 views
7

Me gustaría crear un conducto con nombre, como el creado por "mkfifo", pero una advertencia. Quiero que la tubería sea bidireccional. Es decir, quiero que el proceso A escriba en la fifo y el proceso B que lea de ella, y viceversa. Una tubería creada por "mkfifo" permite que el proceso A lea los datos escritos en la tubería. Normalmente usaría dos tuberías, pero estoy tratando de simular un dispositivo real, por lo que me gustaría que la semántica de open(), read(), write(), etc. sea lo más similar posible al dispositivo real. ¿Alguien sabe de una técnica para lograr esto sin recurrir a dos tuberías o un zócalo con nombre?Canalización con nombre similar a la creación "mkfifo", pero bidireccional

Respuesta

5

Utilice un socket de dominio Unix.

Oh, dijiste que no querías usar la única solución disponible: un socket de dominio Unix.

En ese caso, tiene que abrir dos tubos con nombre, o prescindir de él. O escriba su propio controlador de dispositivo para ellos, por supuesto, podría hacerlo para los sistemas de código abierto, de todos modos; podría ser más difícil para los sistemas de fuente cerrada (Windows, AIX, HP-UX).

4

O pty ("interfaz de pseudo-terminal"). man pty.

+3

Una pty viene con un montón de cosas que no desea, por lo general. Como todo el manejo de la disciplina terminal. Pero está pensando fuera de la caja mencionarlo. –

Cuestiones relacionadas