The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"timer_create - не компиляется. блин"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"timer_create - не компиляется. блин"
Сообщение от vvk emailИскать по авторуВ закладки on 31-Янв-03, 22:25  (MSK)
взял пример. а он не компиляется. взял другой - а он тоже не компиляется. на все вызовы методов таймера говорит: 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);
}

Помогиииииииитееее!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: timer_create - не компиляется. блин"
Сообщение от qq Искать по авторуВ закладки on 01-Фев-03, 05:25  (MSK)
надо подключить librt ключом -lrt
а вообще, найти в какой библиотеке лежат нужные тебе ф-ции, можно например так
for i in /lib/*.so /usr/lib/*.so /usr/local/lib*.so ;do objdump -T $i|grep timer_create && echo $i;done
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: timer_create - не компиляется. блин"
Сообщение от vvk emailИскать по авторуВ закладки on 01-Фев-03, 09:49  (MSK)
ок, спасибо.
но почему об этом не пишут ни в доках ни в книжках! в одной доке написано было что надо делать -lposix.
Я вчера с горя заюзал обычный setitimer.
Все равно спасибо, пригодиться.


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру