2009-08-31 11 views
7

Mi piacerebbe creare una pipe denominata, come quella creata da "mkfifo", ma un avvertimento. Voglio che il tubo sia bidirezionale. Cioè, voglio che il processo A scriva sulla fifo e che elabori B per leggerlo e viceversa. Una pipe creata da "mkfifo" consente al processo A di leggere i dati scritti nella pipe. Normalmente userei due pipe, ma sto cercando di simulare un dispositivo reale, quindi mi piacerebbe che la semantica di open(), read(), write(), ecc. Fosse simile al dispositivo reale possibile. Qualcuno sa di una tecnica per realizzare questo senza ricorrere a due pipe o una presa denominata?Named pipe simile alla creazione "mkfifo", ma bidirezionale

risposta

5

Utilizzare un socket dominio Unix.

Oh, hai detto che non vuoi usare l'unica soluzione disponibile - un socket dominio Unix.

In tal caso, si è bloccati con l'apertura di due pipe denominate o senza. Oppure scrivi il tuo driver di dispositivo per loro, ovviamente - potresti farlo comunque per i sistemi open source; potrebbe essere più difficile per i sistemi closed source (Windows, AIX, HP-UX).

4

Oppure pty ("interfaccia pseudo-terminale"). man pty.

+3

Una pty viene con un sacco di cose che non vuoi - di solito. Come tutta la gestione della disciplina terminale. Ma sta pensando fuori dagli schemi per menzionarlo. –