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

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



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

Всю жизнь использовал time().

Тебе какая почность то нужна? Кстати, прыжки времени (особенно сильные)
это далеко не штатная ситуация, и пытаться отследить их я бы не стал.
Тем более, что если стоит ntp, это некая гарантия, что прыжки не будут
превышать какую-то небольшую велечину.

time() - это стандартное решение для всех (если не ошибаюсь) *unix*ов, и
не надо задумываться. Иначе можно дойти до програмного ECC памяти :-).

-- 
Покотиленко Костик <casper@meteor.dp.ua>



Reply to: