4

我目前正在为测试硬件通信端口的程序编写一些 CPPunit 测试(是的,我正在为测试应用程序编写单元测试;-))。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行调用 read()Linux 上是否有设备文件/驱动程序,如果您访问它,当您从中读取时,您会读回您写的内容(如 FIFO 队列设备)? 如果我有这个设备文件,那么在我的包装器中替换实际的设备文件会非常简单,并且可以很容易地模拟现实世界硬件上可能发生的“环回”场景。write()write()read()


本质上,我正在寻找的是一种假设的"/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
4

2 回答 2

5

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

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

在第二个终端上:

cat /dev/test

然后第一个将解锁,第二个将显示文本!

于 2009-05-14T21:01:46.650 回答
4

你可以用

mknod /dev/echo p

第一个参数是文件名(它可以是任何文件名,不必是 in /dev),第二个参数是p“管道”。

参考:http ://www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html

您还可以查看pipe()C 函数: http: //www.manpagez.com/man/2/pipe/

于 2009-05-14T21:02:46.430 回答