시리얼 디바이스 read가 멈추는 현상이 발생합니다.
글쓴이: coolaid0 / 작성시간: 목, 2008/11/06 - 5:09오후
시리얼 디바이스(ttys2)로 GPS를 연결하여 주기적으로 GPS의 data(nmea-0183)값을 받아보고 있습니다.
매 x초마다 ttys2를 open()하고, 1 byte씩 읽어들여서(read(gps_fd, &ch, 1)) 160 bytes 짜리 버퍼를 채운 후
다시 close()를 시켜주는 구조인데 일정 시간이 지나고 나면 더 이상 새로운 값을 읽지 못하고 예전 정보를 계속 읽어들입니다.
대표적인게 읽어들인 GPS 정보의 시간 정보가 멈춰있는 것처럼 보이는 상태로 유지되는 것이죠.
근데 GPS 모듈 자체를 모니터링 해보면 정상적인 정보가 계속 나오는 것으로 보아 시리얼 상에서의 문제 인 듯 싶습니다.
혹시 시리어 디바이스를 너무 많이 open()/close() 하면 뻗어버린다던가 하는 문제가 있나요?
참고로 2.4 커널을 사용하고 있습니다.
Forums:
캐쉬 문제 아닐까요??
tty read 는 실제 device read 를 수행하는 것이 아니라 tty buffer 를 read 하는 것으로 알고 있습니다.
개인적인 견해지만 이 tty buffer 가 갱신이 되지 않을 가능성이 가장 커 보입니다.
댓글 달기