Dispositif « Echo » pour les tests unitaires
-
21-08-2019 - |
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
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/