2009-05-14 2 views
4

В настоящее время я пишу некоторые тесты CPPunit для программы, которая проверяет аппаратный коммуникационный порт (да, я пишу модульные тесты для приложения тестера ;-)). Один из классов, которые я тестирую, в основном представляет собой оболочку вокруг дескриптора файла устройства; Я делаю read() и write() вызывает дескриптор файла. Есть ли файл/драйвер устройства в Linux, где, если вы write(), когда вы его получите read(), вы прочтете то, что вы написали (например, устройство очереди FIFO)? Если бы у меня был этот файл устройства, было бы действительно просто перевернуть это вместо фактического файла устройства в моей обертке и облегчить эмулирование сценариев «loopback», которые могут возникнуть на аппаратном обеспечении реального мира.Устройство «Эхо» для тестирования модулей


По сути то, что я ищу бы своего рода гипотетическое "/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

Спасибо за ответы; Я уже поймал несколько ошибок с помощью/dev/echo! –

ответ

5

Почему вы не используете канал UNIX в файловой системе?

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

на втором терминале:

cat /dev/test 

Тогда первый разблокируют и второй будет показывать текст!

+0

+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/

+0

+1 для хороших информационных ссылок на трубах! –

Смежные вопросы