4

現在、ハードウェア通信ポートをテストするプログラムの CPPunit テストをいくつか作成しています (はい、テスター アプリの単体テストを作成しています ;-) )。私がテストしているクラスの 1 つは、基本的にデバイスのファイル記述子のラッパーです。ファイル記述子を作成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
4

2 に答える 2

5

ファイルシステムで UNIX パイプを使用しないのはなぜですか?

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

2 番目の端末で:

cat /dev/test

次に、最初のブロックが解除され、2 番目にテキストが表示されます。

于 2009-05-14T21:01:46.650 に答える
4

あなたはで1つを作ることができます

mknod /dev/echo p

最初の引数はファイル名です (任意のファイル名を指定できます。ファイル名である必要はありません/dev)。2 番目の引数は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 に答える