我正在为一个测试硬件通信端口的程序编写一些CPPunit测试(是的,我正在为测试器应用程序编写单元测试;-))。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行read()
和write()
调用。 Linux上是否有设备文件/驱动程序,如果你write()
,那么当你read()
时,你会读回你写的内容(比如FIFO队列设备)?如果我有这个设备文件,那么在我的包装器中替换实际的设备文件将会很简单,并且可以很容易地模拟真实硬件上可能出现的“环回”场景。
基本上我正在寻找的是一种假设的"/dev/echo"
设备。
Ex:设备的行为如下:
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
答案 0 :(得分:5)
为什么不在文件系统中使用UNIX管道?
mkfifo /dev/test
echo test > /dev/test
在第二个终端上:
cat /dev/test
然后第一个将解锁,第二个将显示文本!
答案 1 :(得分:4)
您可以使用
创建一个mknod /dev/echo p
第一个参数是文件名(它可以是任何文件名,不必在/dev
中),第二个参数是p
用于“管道”。
参考:http://www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html
您还可以查看pipe()
C函数:http://www.manpagez.com/man/2/pipe/