Question

Je suis en train d'écrire quelques tests cppunit pour un programme qui teste un port de communication de matériel (oui, je suis à écrire des tests unitaires pour une application de testeur ;-)). Une des classes je teste est essentiellement un wrapper autour du descripteur de fichier de l'appareil; Je fais et read() invite la write() descripteur de fichier. Y at-il un fichier périphérique / pilote sous Linux où si vous lui "/dev/echo", quand vous de celui-ci vous <=> relira ce que vous avez écrit (comme un dispositif de file d'attente FIFO)? Si je devais ce fichier de périphérique, il serait très simple à plop qui à la place du fichier de périphérique réel dans mon emballage et serait facile d'imiter les scénarios « loopback » qui pourraient se produire sur le matériel dans le monde réel.


Essentiellement ce que je suis à la recherche serait une sorte de dispositif hypothétique <=>.

Ex: Le dispositif se comporterait comme suit:

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
Était-ce utile?

La solution

Pourquoi ne pas utiliser un tuyau UNIX dans le système de fichiers?

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

sur une seconde borne:

cat /dev/test

Alors le premier débloquera et le second affiche le texte!

Autres conseils

Vous pouvez faire un avec

mknod /dev/echo p

Le premier argument est le nom de fichier (il peut être un nom de fichier, ne doit pas être dans le /dev), second argument est p de "pipe".

Référence: http: //www.unix .com / unix-mannequins-questions-réponses / 22205-unix-pipe.html

Vous pouvez également regarder dans la fonction C pipe(): http: // www. manpagez.com/man/2/pipe/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top