[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Программерам: как узнать разницу времени



Hi!

Только что такой же проблемой озаботились. Это POSIX.
times() на BSD благополучно переводится вместе с часами ;-), а это работает нормально,
проверено.

    struct timespec t;
    clock_gettime(CLOCK_MONOTONIC, &t);

В сообщении от Понедельник 11 сентября 2006 13:23 Max Dmitrichenko написал(a):
> Привет всем!
> 
> Программерский вопрос.
> 
> Хочу узнать в программе, сколько времени прошло между двумя событиями.
> Вроде простая задача: запомнил одно время, получил второе, из второго
> вычел первое - и делов-то. Но если задуматься:
> 1) time() и gettimeofday() не катят - юзер или демон ntp может это
>   время поменять в промежутке между двумя событиями и мы получим
>   неизвестно что.
> 2) times() - ман говорит, что в линуксе это время в тиках от старта
>    системы. Если написать простейший тест и посчитать то, что он
>    возвращает - то это нихрена не от старта, но то, что это не зависит
>    от текущего времени - это факт.
> 
>    Но! В BSD этот же ман говорит, что times - obsoleted и возвращает
>    время в тиках от 01.01.1970 00:00:00, что уже автоматические зависит
>    от текущего времени. (Что он возвращает на самом деле, не проверял)
> 
> 3) clock() у меня в линуксе хронически возвращает ноль и хоть убейся.
> 
> Короче, кто-нибудь знает более-менее мультиплатформенный способ добыть
> такую информацию? Я думаю, что любая ОС в ядре её имеет - ядрённый
> таймауты должны же как-то работать вне зависимости от текущего времени.
> В линуксовом ядре, например, это jiffies. Но в юзерспейсе чего-то
> подобного не нашел.
> 
> --
>   Макс
> 
> 

-- 
Alexander Kogan
Institute of Applied Physics
Russian Academy of Sciences

Reply to: