Выдержки из кода:
void check_alarm(int sign){
//handle timer
}
int main(int argc, char *argv[]){
struct sigaction alarm_act;
struct itimerval alarm_timer;
bzero(&alarm_act, sizeof(struct sigaction));
alarm_act.sa_handler=&check_alarm;
sigaction(SIGALRM, &alarm_act, NULL));
alarm_timer.it_interval.tv_sec=60;
alarm_timer.it_interval.tv_usec=0;
alarm_timer.it_value.tv_sec=1800;
alarm_timer.it_value.tv_usec=0;
if (setitimer(ITIMER_REAL, &alarm_timer, NULL)){
fprintf (stderr, "Cannot start alarm timer - %s\n", strerror(errno));
return -1;
}
//start mainloop
return 0;
}