Здравствуйте. Столкнулся с такой проблемой: Требуется синхронизировать время компьютера под управлением QNX 4.25 от внешнего источника. Использую для корректировки времени функцию clock_settime(). Проблема заключается в том, что эта функция сбрасывает таймеры CLOCK_REALTIME, соответственно в другой программе запущенной на QNX начинаются проблемы.
case WAIT_REPLY:
timespec currtime;
if (clock_gettime(CLOCK_REALTIME, &currtime) < 0)
{
cerr << "Can't get time: errno = " << errno << endl;
}
long int delay = ((currtime.tv_sec - sendtime.tv_sec)*1000000000. + (currtime.tv_nsec - sendtime.tv_nsec)) / 1000000.;
// cerr << "DELAY = " << delay << endl;
if (delay < (1000 + timeout)) return;
state = READY_TO_SEND;
case READY_TO_SEND:
outd->Write(outpack);
if (clock_gettime(CLOCK_REALTIME, &sendtime) < 0)
{
cerr << "Can't get time: errno = " << errno << endl;
}
state = WAIT_REPLY;
Попробовал поменять в этом коде clock_gettime() на times() - время прошедшее с момента запуска программы. Но в структуре все нули. Мне кажется, что отключен time accounting. Как это проверить? как его включить? Может быть есть другая возможность отсчитывать независимое от перевода время?
P.S. Проект разрабатывался еще до меня, разработчики естественно, уже уволились и уехали )) я теперь пытаюсь его поддерживать. Сложность еще в том, что экземпляр системы для которой требуется новая программа синхронизации времени, находится в паре тысяч километров от меня и удаленного доступа я к ней не имею. Могу только через персонал на позиции отправлять файлы,скрипты обновлений. Персонал не имеет root доступа.