Domanda

Attualmente sto scrivendo su alcuni test CppUnit per un programma che mette alla prova una porta di comunicazione hardware (sì, sto scrittura di unit test per un'applicazione tester ;-)). Una delle classi sto testando è fondamentalmente un wrapper descrittore di file del dispositivo; Faccio read() e write() invita il descrittore di file. C'è una periferica file / driver in Linux dove se "/dev/echo" ad esso, quando si <=> da esso potrete leggere di nuovo quello che hai scritto (come un dispositivo di coda FIFO)? Se dovessi questo file dispositivo, sarebbe veramente semplice da plop che al posto del file dispositivo reale nel mio involucro e renderebbe più facile per emulare scenari "loopback" che potrebbero verificarsi su hardware reale.


In sostanza quello che sto cercando sarebbe una sorta di dispositivo <=> ipotetica.

Ex: Il dispositivo si sarebbero comportati come segue:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789
È stato utile?

Soluzione

Perché non si utilizza una pipe UNIX nel filesystem?

mkfifo /dev/test
echo test > /dev/test

su un secondo terminale:

cat /dev/test

Poi il primo sbloccherà e la seconda mostrerà il testo!

Altri suggerimenti

Si può fare uno con

mknod /dev/echo p

Il primo argomento è il nome del file (può essere qualsiasi nome di file, non deve essere in /dev), secondo argomento è p per "pipe".

Riferimento: http: //www.unix .com / unix-manichini-domande-risposte / 22205-unix-pipe.html

Si potrebbe anche prendere in considerazione la pipe() funzione C: http: // www. manpagez.com/man/2/pipe/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top