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);
}
}
}
答案 0 :(得分:2)
问题是第一行。你必须传递一个函数指针,看起来你正在调用函数,它恰好有一个void返回类型。看起来你也希望C有闭包 - 你试图将参数传递给信号处理函数。这是不可能的。您需要将这些值存储在全局变量中,并使用正确的信号处理程序原型声明您的信号处理程序。