Есть ли стандартный способ преобразования struct timeval в struct timepec? - PullRequest
11 голосов
/ 24 октября 2009

struct timeval представляет и мгновенно по времени с двумя членами, tv_sec (секунды) и tv_usec (микросекунды). В этом представлении tv_usec само по себе не является абсолютным временем, это смещение на 1 секунду от tv_sec.

struct timespec работает так же, за исключением того, что вместо микросекунд его смещение (tv_nsec) хранится в наносекундных единицах.

Вопрос в том, существует ли стандартный способ конвертации между этими двумя?

Ответы [ 2 ]

15 голосов
/ 05 ноября 2014

В sys/time.h есть два макроса, которые делают то, что вы хотите:

TIMEVAL_TO_TIMESPEC(X, Y)

и

TIMESPEC_TO_TIMEVAL(X, Y)

См. Документы здесь: http://www.daemon -systems.org / man / TIMEVAL_TO_TIMESPEC.3.html

15 голосов
/ 24 октября 2009

Глядя на этот документ , я думаю, что умножения tv_usec на 1000 достаточно, чтобы получить tv_nsec.

Более важно, я подозреваю, является источником различных структур: они могут быть заполнены разными часами.

...