взял пример. а он не компиляется. взял другой - а он тоже не компиляется. на все вызовы методов таймера говорит: undefined reference to 'timer_cerate' и т.д.
компиляю g++ pp.c
что я не так делаю?
вот исходник на всякий пожарный.
#define _POSIX_C_SOURCE 199506L
#include<unistd.h>
#include<signal.h>
#include<time.h>
#include<stdio.h>
#define OUR_CLOCK CLOCK_REALTIME
char *prog_name;
void timer_intr(int sig, siginfo_t *extra, void *cruft)
{
int noverflow;
if(noverflow=timer_getoverrun(*(timer_t *)
extra->si_value.sival_ptr)){
/*timer has overflowed -- error !*/
}
return;
}
timer_t mytimer;
main(int argc, char **argv){
int c;
struct itimerspec i;
struct timespec resolution;
struct sigaction sa;
sigset_t allsigs;
struct sigevent timer_event;
prog_name=argv[0];
sigemptyset(&sa.sa_mask);
sa.sa_flags=SA_SIGINFO; /*real-time signal*/
sa.sa_sigaction=timer_intr; /*pointer to action*/
if(sigaction(SIGRTMIN, &sa, NULL) < 0){
perror("sigaction error");
exit(1);
}
/*
* first determine whether the desired clock exists
*/
if (clock_getres(OUR_CLOCK, &resolution) < 0){
perror("clock_getres error");
exit(1);
}
printf("clock resolution %d sec %d nsec \n",
resolution.tv_sec, resolution.tv_nsec);
/*
* create a timer based upon the CLOCK_REALTIME clock
*/
i.it_interval.tv_sec=0;
/* set resolution to one-tenth of the maximum allowed*/
i.it_interval.tv_nsec=resolution.tv_nsec*10;
i.it_value=i.it_interval;
/*
* this describes the asynchronous notification to be posted
* upon this timer's expiration:
*
* - use signals
* - send SIGRTMIN
* - send extra data consisting of a pointer back to the timer ID
* cannot pass the timer ID itself because we haven't created it
* yet.
*/
timer_event.sigev_notify=SIGEV_SIGNAL;
timer_event.sigev_signo= SIGRTMIN;
timer_event.sigev_value.sival_ptr = (void *)&mytimer;
if (timer_create(OUR_CLOCK, &timer_event, &mytimer) < 0){
perror("timer create error");
exit(1);
}
/* relative timer, go off at the end of the interval*/
if(timer_settime(mytimer, 0 , &i, NULL) < 0){
perror("settimer");
exit(3);
}
sigemptyset(&allsigs);
while(1){
sigsuspend(&allsigs);
}
exit(4);
}
Помогиииииииитееее!!!