임베디드 리눅스 프로그램인데 멈춰요..ㅠ

콩수니의 이미지

안녕하세요
임베디드 리눅스에서 프로그램을 만들어서 센서로 부터 수집된 데이터를
다른 서버로 보내는 프로그램입니다.

main()
{
...
...
...
while(1)
{
data = getdata(); //센서 데이터 수집하기
write(soket,data.size);//서버에 데이터 보내기
sleep(60);
}
...
}

뭐 이런식입니다.
처음에는 잘 데이터 수집해서서버로 보내주는데....
빠르면 3분내 늦으면 10분내로 데이터를 보내지 않습니다.
ㅠㅠ
프로세스확인해보면 분명 프로세스는 아직 살아있습니다.
왜 죽어버리는걸까요...ㅠㅠ

정안되면 sleep함수를 구현해보려고하는데
틱값을 이용해서 구현하면 될것같은데

조언부탁드립니다.

snowall의 이미지

http://kldp.org/node/134055

음... 이것도 버퍼 문제 아닐까요? -_-

피할 수 있을때 즐겨라! http://melotopia.net/b

콩수니의 이미지

다시 보니깐
sleep 함수는 상관없는것같습니다

단순히

main()
{

while(1){
printf(".");
}

}
이렇게 무한 반복문으로 했는데도 멈추네요.
보드 특성때문에 이런건지..다른 임베디드 보드가 없어서 테스트해볼수도없고..
버퍼문제면 어떻게 접근을해야하나요..ㅠ

devband

ymir의 이미지

'멈춰요' 의 상태를 명확히 파악하시는게 우선이겠네요.
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 』

doraq의 이미지

열 문제도 고려해보세요..

콩수니의 이미지

독립형 데몬으로 만들어서
프로그램 시작할때 작동하게 했더니 잘 되네요

터미널로 하면 안되었던건지..
이유를 알수가 없네요..

다행히 사용자랑 의사소통하는 프로그램이 아니라서...그냥 이렇게 처리를해야겠네요
흠야..

devband