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