URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 838
[ Назад ]

Исходное сообщение
"Пытаюсь написать программу на С++, связанную с таймером POSIX"

Отправлено Micra , 10-Июл-02 20:11 
Что такое POSIX я узнала 2 часа назад, что такое Linux - две недели назад. Так что еще пока ниче не понимаю. Алгоритм есть. В нем все начинается с того, что надо создать таймер с идентификатором tr с помощью функции timer_create(). А какого типа должен быть идентификатор?

Содержание

Сообщения в этом обсуждении
"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено XMan , 10-Июл-02 21:03 
А что есть и откуда взялся timer_create() ?
У меня в мане много всякого есть, а этого нет.

"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено Micra , 10-Июл-02 21:24 
>А что есть и откуда взялся timer_create() ?
>У меня в мане много всякого есть, а этого нет.

3.14.5.1. Программа примера имеет следующий алгоритм:
-    создается таймер посредством функции timer_create(), номер сигнала SIGUSR2;
-    устанавливается счетчик п, значение которого равно любому целому числу;
-    устанавливается программа обработки прерываний от таймера посредством функции sigaction(). В функции указанной программы входит уменьшение счетчика п на единицу;
-    запускается таймер посредством функции timer_settime() с указанием относительного временного интервала  а1 и периодического временного интервала в1 ;
-    программа примера приостанавливается на временной интервал посредством функции nanosleep(), с указанием временного интервала t, меньшего, чем временной интервал, заданный при запуске таймера;

И так далее.
.....


"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено XMan , 10-Июл-02 22:49 
Хех. Так это, смотри "программу примера", ибо все там расписано :))
А nanosleep() - стандартная функция:

#include <time.h>

struct timespec
{
        time_t  tv_sec;                 /* секунды */
        long    tv_nsec;                /* наносекунды */
};

int nanosleep(const struct timespec *req, struct timespec *rem);

nanosleep приостанавливает работу процесса как минимум на время, заданное параметром *req....

Вобщем, "man nanosleep". Ну и "man sigaction"


"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено Micra , 10-Июл-02 23:11 
Спасибо все начинает прояснятся.

"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено Micra , 11-Июл-02 14:40 
А подскажите кто-нибудь описание структуры sigevent, пожалуйста.



"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено uin , 11-Июл-02 14:50 
>А подскажите кто-нибудь описание структуры sigevent, пожалуйста.


struct sigevent
{
int sigev_notify; // SIGEV_SIGNAL || SIGEV_NONE (sigev_signo ignored)
int sigev_signo; // signal to be generated
union sigval sigev_value; // commonly useless
}

union sigval
{
int sival_int;
void * sival_ptr;
}



"RE: Пытаюсь написать программу на С++, связанную с таймером POSIX"
Отправлено Micra , 11-Июл-02 16:25 
Спасибо


"а в linux что надо добавить чтобы была доступна функция timer_create? (+)"
Отправлено Ingvar , 09-Дек-02 21:50 
У меня такая же проблема, но я, честно говоря, не понимаю, что нужно доставить чтобы стали доступны функции, соответствующие POSIX (на RedHat ничего про это не написано, или я ничего про это не понял).
Linux RedHat 7.3. Люди, помогите пожалуйста, потому что стандартные таймеры на SIGALRM забрала себе CRT, мне нужно завести свои, они даже есть в time.h , но линковщик говорит что функция timer_create unresolved. Надо обновить glibc или ядро linux  или что нужно сделать? Или есть другой пусть получать сигналы (мне нужно хотя бы раз в три миллисекунды). Я новичок в Linux, надо перенести программу из-под ДОС, там все было просто - забрал себе прерывание от таймера и наслаждайся, а тут ... пока непонятно:(



"RE: а в linux что надо добавить чтобы была доступна функция time..."
Отправлено joker , 13-Дек-02 19:14 
ну если не стоит задача раздуплицца с таймерами и прочей поторчью, то почему бы не попользовать cron ?