#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<time.h>
#include<sys/time.h>
struct itimerval timer1; //define structure which will be used by function setitimer
void hello();
int main()
{
timer1.it_value.tv_sec=5; //initialize structure
setitimer(ITIMER_REAL,&timer1,NULL); //turn on timer
signal(SIGALRM,hello); //register signal SIGALRM
pause(); //waiting for signal
exit(0);
}
void hello()
{
printf("Hello, Linux !");
}
timer时间一到会发出一个SIGALRM信号,进程等待信号,接收到信号后执行hello子函数。一开始编译报错,说结构体赋值那一行有错,但是找了很久也没找到原因。最后师傅几秒就看出了问题,原来时因为结构体的赋值写到了函数体的外面,不符合c语言语法。将这句移到主函数里之后,果然问题解决了!
#include<unistd.h>
#include<signal.h>
#include<time.h>
#include<sys/time.h>
struct itimerval timer1; //define structure which will be used by function setitimer
void hello();
int main()
{
timer1.it_value.tv_sec=5; //initialize structure
setitimer(ITIMER_REAL,&timer1,NULL); //turn on timer
signal(SIGALRM,hello); //register signal SIGALRM
pause(); //waiting for signal
exit(0);
}
void hello()
{
printf("Hello, Linux !");
}
timer时间一到会发出一个SIGALRM信号,进程等待信号,接收到信号后执行hello子函数。一开始编译报错,说结构体赋值那一行有错,但是找了很久也没找到原因。最后师傅几秒就看出了问题,原来时因为结构体的赋值写到了函数体的外面,不符合c语言语法。将这句移到主函数里之后,果然问题解决了!