2009-05-14 3 views
4

현재 하드웨어 통신 포트를 테스트하는 프로그램에 대해 CPPunit 테스트를 작성하고 있습니다 (예, 테스터 앱의 단위 테스트를 작성하고 있습니다 .-)). 기본적으로 테스트 할 클래스 중 하나는 기본적으로 장치의 파일 설명자를 둘러싼 래퍼입니다. 나는 파일 설명자에 대해 read()write() 호출을 만든다. Linux에 장치 파일/드라이버가 있습니까? write()에 연결하면 read()을 작성하면 FIFO 대기열 장치와 같이 쓴 내용을 다시 읽을 수 있습니까?이 장치 파일이 있다면 래퍼에 실제 장치 파일 대신에 그 파일을 두는 것이 정말 간단하고 실제 하드웨어에서 발생할 수있는 "루프백"시나리오를 쉽게 에뮬레이션 할 수 있습니다. 나는 가상 "/dev/echo" 장치의 종류가 될 것입니다 찾고 있어요 본질적으로 무엇을단위 테스트를위한 "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 
+0

감사합니다; 이미/dev/echo를 사용하여 여러 버그를 발견했습니다! –

답변

5

이 왜 파일 시스템에 UNIX 파이프를 사용하지 않는? 제 2 단자에

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

:

cat /dev/test 

그런 다음 차단을 해제합니다 1 및 제 2 텍스트를 표시합니다!

+0

+1 ... 거기에 보지 못했습니다 –

4

당신은

mknod /dev/echo p 

첫 번째 인수로 하나를 파일 이름입니다 수 있습니다, 두 번째 인수는 "파이프"에 대한 p입니다 (그것이 어떤 파일 이름이 될 수 /dev에있을 필요가 없습니다).

참조 : http://www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html

당신은 또한 pipe() C의 함수로 볼 수 있습니다 : 응답에 대한 http://www.manpagez.com/man/2/pipe/

+0

+1 파이프에 대한 좋은 정보를 참조하십시오! –

관련 문제