我正在编写一些testing硬件通信端口的程序的CPPunittesting(是的,我正在为testing应用程序编写unit testing;-))。 我正在testing的一个类基本上是设备的文件描述符的一个包装; 我在文件描述符上进行read()
和write()
调用。 在Linux上有没有设备文件/驱动程序,如果你write()
,当你从它read()
,你会读回你写的(如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
),第二个参数是“pipe”的p
。
参考: http : //www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html
你也可以看看pipe()
C函数: http : //www.manpagez.com/man/2/pipe/