임베디드 리눅스 프로그램인데 멈춰요..ㅠ
글쓴이: 콩수니 / 작성시간: 목, 2012/08/16 - 5:07오후
안녕하세요
임베디드 리눅스에서 프로그램을 만들어서 센서로 부터 수집된 데이터를
다른 서버로 보내는 프로그램입니다.
main()
{
...
...
...
while(1)
{
data = getdata(); //센서 데이터 수집하기
write(soket,data.size);//서버에 데이터 보내기
sleep(60);
}
...
}
뭐 이런식입니다.
처음에는 잘 데이터 수집해서서버로 보내주는데....
빠르면 3분내 늦으면 10분내로 데이터를 보내지 않습니다.
ㅠㅠ
프로세스확인해보면 분명 프로세스는 아직 살아있습니다.
왜 죽어버리는걸까요...ㅠㅠ
정안되면 sleep함수를 구현해보려고하는데
틱값을 이용해서 구현하면 될것같은데
조언부탁드립니다.
Forums:
http://kldp.org/node/134055
http://kldp.org/node/134055
음... 이것도 버퍼 문제 아닐까요? -_-
피할 수 있을때 즐겨라! http://melotopia.net/b
버퍼요ㅠ??
다시 보니깐
sleep 함수는 상관없는것같습니다
단순히
main()
{
while(1){
printf(".");
}
}
이렇게 무한 반복문으로 했는데도 멈추네요.
보드 특성때문에 이런건지..다른 임베디드 보드가 없어서 테스트해볼수도없고..
버퍼문제면 어떻게 접근을해야하나요..ㅠ
devband
음 ..
'멈춰요' 의 상태를 명확히 파악하시는게 우선이겠네요.
block 된건지, deadlock 에 걸렸는지, 무한 loop 에 빠졌는지, 오류 상태에서 복구하지 못하고 있는건지..
할 수 있는 한 정확히 '멈춰요' 란 단어가 어떤 상태를 뜻하는건지 파악해 보세요.
데이터를 안 보낼 수 밖에 없는 어떤 조건이 있는데, 코드상으로 핸들링 되지 않고 있을 수도 있을겁니다.
strace/ltrace, lsof, netstat, tcpdump, printf 등 쓸 수 있는 방법은 다 써보시구요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
개발중인 보드라면..
열 문제도 고려해보세요..
데몬으로 돌리니깐 되네요..
독립형 데몬으로 만들어서
프로그램 시작할때 작동하게 했더니 잘 되네요
터미널로 하면 안되었던건지..
이유를 알수가 없네요..
다행히 사용자랑 의사소통하는 프로그램이 아니라서...그냥 이렇게 처리를해야겠네요
흠야..
devband
댓글 달기