char device 관련 문제

pwy1575의 이미지

안녕하세요

char 디바이스 장치 사용에 대해 질문드립니다.

환경 : linux kernel 2.6.22

1. char 디바이스를 open 함수를 이용하여 fd를 받아 write(시스템콜함수) 할 경우
2. echo 'aa' > /dev/char디바이스

위 두가지 방식으로 디바이스 장치로 write를 시도 했습니다.

1 번 방식은 입력한 문자 (ex.문자열 "aa") 가 정상적으로 입력되어 디바이스에 들어오나

2 번 방식을 이용한 경우 "aa" 이외의 데이터(쓰레기데이터)가 섞여 들어옵니다.(ex. aa lakfal[qpemm)

1.2 번 모두 char 디바이스 드라이버의 동일 write 시스템콜 함수를 호출하게 됩니다.

동일 디바이스에 동일 문자열을 밀어 넣는데 다르게 동작하는 원인이 무엇인지 알고 싶습니다.

감사합니다.

...!의 이미지

한 가지 차이는 echo 'aa' 는 실제로는 'aa\n'을 출력한다는 겁니다. 그게 일반적으로 말씀하신 차이를 가져올 것 같지는 않지만 일단 저는 다른 짐작가는 차이는 없네요. echo -n 'aa' 와 결과를 비교해보시는 것이 어떨런지요? 만약에 이 경우에는 결과가 같다면 디바이스 드라이버 구현에서 '\n'의 유무때문에 차이가 발생할 수 있는 지 살펴보시는 것이 좋을 듯 합니다.

pwy1575의 이미지


말씀해주신 echo 의 옵션 차이(\n 의 여부)에 따라
디바이스 드라이버 상에서 처리 하는 과정이 달라지는 것 같습니다.
echo -n 으로 사용하면 정상 동작합니다.

감사합니다.

pwy1575의 이미지

동일 댓글으로 삭제하겠습니다.