Программирование в стандарте POSIX


Опрос и установка показаний часов реального времени - часть 3


С функцией time() ассоциирована функция difftime(), вычисляющая (в виде значения типа double) разность в секундах между двумя моментами времени (time1 - time0, см. листинг 12.3).

#include <time.h> double difftime (time_t time1, time_t time0);

Листинг 12.3. Описание функции difftime().

Узнать текущее время с большей точностью позволяет функция gettimeofday() (см. листинг 12.4).

#include <sys/time.h> int gettimeofday (struct timeval *restrict tp, void *restrict tzp);

Листинг 12.4. Описание функции gettimeofday().

Согласно стандарту POSIX-2001, описанная в заголовочном файле <sys/time.h> структура timeval содержит по крайней мере следующие поля.

time_t tv_sec; /* Секунды */ suseconds_t tv_usec; /* Микросекунды */

Функция gettimeofday() записывает текущее время, выраженное в секундах и микросекундах от начала отсчета, в структуру типа timeval, на которую указывает аргумент tp. Указатель tzp должен быть пустым.

Впрочем, микросекунды - это еще на предел точности, а опрос системных часов - не предел общности. В необязательную часть стандарта POSIX-2001, регламентирующую работу с таймерами, входят функции, позволяющие опросить и установить показания заданных часов, а также узнать их разрешающую способность (см. листинг 12.5).

#include <time.h> int clock_getres (clockid_t clock_id, struct timespec *res); int clock_gettime (clockid_t clock_id, struct timespec *tp); int clock_settime (clockid_t clock_id, const struct timespec *tp);

Листинг 12.5. Описание функций опроса характеристик и установки часов.

Структура timespec отличается от timeval тем, что вместо микросекунд хранит наносекунды:

time_t tv_sec; /* Секунды */ long tv_nsec; /* Наносекунды */

Функция clock_getres() позволяет опросить разрешающую способность часов с заданным идентификатором и поместить результат в структуру, на которую указывает аргумент res.

Функция clock_gettime() записывает в аналогичную структуру текущие показания заданных часов.

Наконец, функция clock_settime() устанавливает заданные часы на основании значений полей структуры типа timespec, на которую указывает аргумент tp.




Начало  Назад  Вперед