2010-08-08 5 views
-2
turtle(int fd,int sec1,int turtle_speed){ 

    signal(SIGUSR1,handle(fd,turtle_speed)); 

    struct timeval b; 

    int flag=1,turtle_current_pos,turtle_previous_pos=0,sec2; 

    turtle_current_pos=0; 

    while(turtle_current_pos<100){ 

      sleep(2); 

       gettimeofday(&b,NULL); 

    sec2=b.tv_sec; 

    //printf("%d\n",sec2); 

    turtle_current_pos=(sec2-sec1)*turtle_speed; 
    fflush(stdout); 

    if((turtle_current_pos-turtle_previous_pos)>=1){ 
     turtle_previous_pos=turtle_current_pos; 
     print('T',turtle_previous_pos); 
    } 
    } 
} 
+1

유효하지 않은 방식으로 void 식을 사용하는 대신 유효한 식으로 만 식을 사용해야합니까? 진지하게, 오류가 어디에 있는지 또는 상황을 말하지 않으면 사람들이 당신을 도울 수 없다. –

+0

'handle()'은 무엇입니까? 최소한 코드 *가 오류를 일으키는 줄을 우리에게 알려주십시오. –

+0

첫 번째 줄입니다. 내 대답을 보라. –

답변

2

문제는 첫 번째 줄입니다. 함수 포인터를 전달해야하는데, 함수를 호출하는 것처럼 보입니다. 함수는 무효 반환 형식을가집니다. 또한 C가 클로저를 갖기를 원하는 것처럼 보입니다 - 시그널 핸들러 함수에 인수를 전달하려고합니다. 이건 불가능 해. 이러한 값을 전역 변수에 저장하고 신호 처리기에 올바른 프로토 타입으로 신호 처리기를 선언해야합니다.

관련 문제