2011-04-05 5 views
0

타이머를 만듭니다. 구조는 다음과 같습니다.timer_create 및 timer_settime이 세그먼트 화 오류를 생성합니다.

struct my_timer 
{ 
    unsigned int ip_address; 
    timer_t timer; 
}; 

이제 ip_address이 초기화됩니다.

그 후에 "timer_create"를 통해 타이머를 만들려고하면 세그멘테이션 오류가 발생합니다.

전에 ip_address을 초기화하지 않은 다음 타이머를 만들면 타이머가 성공적으로 만들어집니다.

아무도 도움이 될 수 있습니까?

기본적으로 ip_address은 어느 타이머가 나중에 중지되어야하는지 찾으려합니다.

+2

실마리가 없습니다. 더 많은 코드를 표시 하시겠습니까? 내 유일한 (멀리 가져온) 직감은 당신이 구조체 대신에 유니온을 사용하고있을 수 있다는 것이다. – sehe

+0

제 직감은'timer_create'에 올바른 인수를 전달하지 않는다는 것입니다. 코드를 보여주세요. 질문은 현재의 양식에서 답할 수 없습니다 ... –

+0

안녕하세요, 나는 나중에 ip_address를 초기화하여 timer_create에서 seg 오류를 해결했습니다 ...하지만 문제는 이제 timer_settime을 할 때 타이머를 멈추게합니다. – himanshu

답변

0

documented으로, timer_create(2)은 IP 주소를 포함하는 어떠한 종류의 인수도 취하지 않으며 timer_t과 사용자 지정 기타 부분을 포함하는 구조도 포함하지 않습니다.

컴파일러 경고가 활성화되어 있습니까? 부적절한 인수를 사용하여 이러한 함수를 호출하는 것이지만 코드를 보지 않고는 확실히 알 수있는 방법이 없다고 생각합니다.

+0

안녕 모두, 답장을 보내 주셔서 감사합니다. 나는 마침내 타이머 문제를 해결하기 위해 timer_settime에서 타이머 ID를 전달하는 대신 실수로 타이머 ID를 전달했습니다. .. :) – himanshu

+0

나는 이해할 수 없다. timer_settime에 대한 문서에서는 timer_t를 첫 번째 인수로 사용한다고 말합니다. 당신은 지금 당신이 timer_t *를 넘겨 준다고 말하면서 timer_t를 넘기는 것보다 효과가 있습니까? 그렇다면 시스템이 비표준입니까, 아니면 이와 관련하여 Google의 timer_settime에 대한 조회수와 다른 문서가 있습니까? –

+0

여기에 혼란스러워서 "stop_timer"함수에 대한 선언은 stop_timer (timer_t * timerid)입니다. stop_timer 함수는 타이머 ID에 대한 포인터를 얻고 있지만이 함수에서 타이머 ID를 잘못 보내고있었습니다. stop_timer에서 timer_settime (* timerid, 0, &, NULL)을 사용하고 있습니다. 이것은 timer_settime에서만 timer_t 값을 효과적으로 전송한다는 의미입니다. 알았어. – himanshu

관련 문제