Страниц: [1]
  Печать  
Автор Тема: Как выполнять код каждые 4 часа утра?  (Прочитано 11994 раз)
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« : Июня 20, 2011, 06:05:42 pm »

Нужно под линуксом (ubuntu), в программе выполнять действие в каждые 4 часа утра?
как с помощью таймеров это реализовать.
Работал с периодическими таймерами timer_create/timer_settime.
Флаг TIMER_ABSTIME здесь уместен? Как сделать так, что бы таймер срабатывал каждые 4 часа утра?
Записан
ob1
Hero Member
*****
Offline Offline

Сообщений: 629


What has two thumbs up and doesn't give a crap?


Просмотр профиля WWW
« Ответ #1 : Июня 20, 2011, 06:33:09 pm »

Вы про cron слышали?
Записан
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #2 : Июня 21, 2011, 12:00:42 pm »

мне нужно выполнять действие изнутри программы.
программа получает данные GPS, и каждые четыре часа утра обновляет системное время + ожидает подключения по tcp, и по запросу выдает это время в своем формате.
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #3 : Июня 21, 2011, 12:04:17 pm »

фигня какая-то, время надо постоянно подстраивать, тем более у вас gps есть
ну и поднимайте по крону демон слушающий ваш порт, завершения демона либо по таймауту, либо после закрытия коннекта
Записан
ob1
Hero Member
*****
Offline Offline

Сообщений: 629


What has two thumbs up and doesn't give a crap?


Просмотр профиля WWW
« Ответ #4 : Июня 21, 2011, 12:23:04 pm »

Fregl, Вы тут свой Windows-way не разводите. Это как раз в винде каждая программа считает, что она всё сама должна делать. А вот в UNIX-like надо делать простые программы, а не хромоногих монстров.

Почитайте хоть Философия UNIX в википедии для начала.
Записан
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #5 : Июня 21, 2011, 01:06:17 pm »

пожалуй так и сделаю, буду читать про крон
Записан
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #6 : Июня 21, 2011, 03:40:26 pm »

такой вопрос: по GPS я получаю данные о времени согласно UTC = 0, т.е. без учета часового пояса.
Как мне в линуксе задать время с учетом этого пояса и учетом зимнего/летнего времени?
вот участок моего кода:
Код:
struct tm tm_time={0};
//Parser - парсер GPS данных с приемника (данные по ком порту)
                tm_time.tm_mday = Parser->m_btRMCDay;
                tm_time.tm_mon = Parser->m_btRMCMonth;
                tm_time.tm_year = Parser->m_wRMCYear - 1900;
                tm_time.tm_hour = Parser->m_btRMCHour;
                tm_time.tm_min = Parser->m_btRMCMinute;
                tm_time.tm_sec = Parser->m_btRMCSecond;

                time_t t = mktime(&tm_time);

                int error = stime(&t);
Каким образом узнать часовой пояс, зимнее/летнее время? Какие API для этого есть?
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #7 : Июня 21, 2011, 03:48:36 pm »

гы, а точно UTC или всё ж GPS time, если не ошибаюсь на сегодня это 15 секунд разницы
а вообще фигню вы пишете, отдайте время ntpd через shm драйвер и всё
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #8 : Июня 21, 2011, 03:49:46 pm »

и ещё, а не изобретаете ли вы велосипед, посмотрите проект gpsd
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #9 : Июня 21, 2011, 03:56:44 pm »

а по вопросу man 3 tzset
Записан
mihaqc
Участник
*
Offline Offline

Сообщений: 1



Просмотр профиля WWW
« Ответ #10 : Мая 24, 2015, 05:08:52 pm »

Это действительно похоже на изобретение велосипеда
Записан
Страниц: [1]
  Печать  
 
Перейти в: