Что такое POSIX я узнала 2 часа назад, что такое Linux - две недели назад. Так что еще пока ниче не понимаю. Алгоритм есть. В нем все начинается с того, что надо создать таймер с идентификатором tr с помощью функции timer_create(). А какого типа должен быть идентификатор?
А что есть и откуда взялся timer_create() ?
У меня в мане много всякого есть, а этого нет.
>А что есть и откуда взялся timer_create() ?
>У меня в мане много всякого есть, а этого нет.3.14.5.1. Программа примера имеет следующий алгоритм:
- создается таймер посредством функции timer_create(), номер сигнала SIGUSR2;
- устанавливается счетчик п, значение которого равно любому целому числу;
- устанавливается программа обработки прерываний от таймера посредством функции sigaction(). В функции указанной программы входит уменьшение счетчика п на единицу;
- запускается таймер посредством функции timer_settime() с указанием относительного временного интервала а1 и периодического временного интервала в1 ;
- программа примера приостанавливается на временной интервал посредством функции nanosleep(), с указанием временного интервала t, меньшего, чем временной интервал, заданный при запуске таймера;И так далее.
.....
Хех. Так это, смотри "программу примера", ибо все там расписано :))
А 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"
Спасибо все начинает прояснятся.
А подскажите кто-нибудь описание структуры sigevent, пожалуйста.
>А подскажите кто-нибудь описание структуры 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;
}
Спасибо
У меня такая же проблема, но я, честно говоря, не понимаю, что нужно доставить чтобы стали доступны функции, соответствующие POSIX (на RedHat ничего про это не написано, или я ничего про это не понял).
Linux RedHat 7.3. Люди, помогите пожалуйста, потому что стандартные таймеры на SIGALRM забрала себе CRT, мне нужно завести свои, они даже есть в time.h , но линковщик говорит что функция timer_create unresolved. Надо обновить glibc или ядро linux или что нужно сделать? Или есть другой пусть получать сигналы (мне нужно хотя бы раз в три миллисекунды). Я новичок в Linux, надо перенести программу из-под ДОС, там все было просто - забрал себе прерывание от таймера и наслаждайся, а тут ... пока непонятно:(
ну если не стоит задача раздуплицца с таймерами и прочей поторчью, то почему бы не попользовать cron ?