C++ &引用;“回声”;单元测试设备

C++ &引用;“回声”;单元测试设备,c++,linux,unit-testing,linux-device-driver,cppunit,C++,Linux,Unit Testing,Linux Device Driver,Cppunit,我目前正在为一个测试硬件通信端口的程序编写一些单元测试(是的,我正在为一个测试程序应用程序编写单元测试;-)。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行read()和write()调用Linux上是否有一个设备文件/驱动程序,如果您写入(),当您从中读取()时,您将读回您所写的内容(如FIFO队列设备)?如果我有这个设备文件,在我的包装器中用它来代替实际的设备文件将非常简单,并且易于仿真实际硬件上可能出现的“环回”场景 基本上,我要寻找的是一种假设的“/dev/ech

我目前正在为一个测试硬件通信端口的程序编写一些单元测试(是的,我正在为一个测试程序应用程序编写单元测试;-)。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行
read()
write()
调用Linux上是否有一个设备文件/驱动程序,如果您
写入()
,当您从中
读取()
时,您将读回您所写的内容(如FIFO队列设备)?
如果我有这个设备文件,在我的包装器中用它来代替实际的设备文件将非常简单,并且易于仿真实际硬件上可能出现的“环回”场景


基本上,我要寻找的是一种假设的
“/dev/echo”
设备

例如:该设备的行为如下:

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

为什么不在文件系统中使用UNIX管道

mkfifo /dev/test
echo test > /dev/test
在第二个终端上:

cat /dev/test
然后第一个将解锁,第二个将显示文本!

您可以使用

mknod /dev/echo p
第一个参数是文件名(它可以是任何文件名,不必在
/dev
中),第二个参数是“管道”的
p

参考:


您还可以查看
pipe()
C函数:

感谢您的响应;我已经用/dev/echo发现了几个bug!