clock_settime – установка показаний часов.
Синтаксис:
#include < time.h >
int clock_settime(clockid_t clock_id, struct timespec *t_time);
Аргументы:
clock_id – идентификатор часов.
t_time – указатель на структуру, содержащую время для установки часов.
Возвращаемое значение:
0 - при успешном завершении функции.
-1 - если обнаружена ошибка, при этом переменной errno присваивается код ошибки [EINVAL] - аргумент clock_id не является идентификатором часов, или [EPERM] - функция была вызвана из функции обработки прерываний.
Описание:
Функция clock_settime() устанавливает часы, на которые указывает идентификатором clock_id, в соответствием со значением, на которое указывает аргумент t_time.
Если значение, на которое ссылается аргумент t_time, не кратно разрешающей способности указанных часов, то оно уменьшается до наибольшего кратного значения. Узнать разрешающую способность часов можно с помощью функции clock_getres.
Система всегда содержит часы с идентификатором CLOCK_REALTIME (системные часы). Значение этих часов содержит время в секундах и наносекундах, истекшее с 0 часов 1 января 1970 года.
При наличии соответствующего оборудования при конфигурации системы могут быть созданы дополнительные часы.
Структура timespec t_time содержит два элемента: time_t tv_sec – секунды, long tv_nsec – наносекунды (время истекшее с последней полной секунды).
Для компиляции программы использующей данную функцию под ОС типа linux, требуется ключ – lrt. Например, для компиляции файла test.c c созданием объектного файла ts.o необходимо в консоле перейти в папку с файлом test.c и набрать команду: gcc test.c -o ts – lrt
Для изменения показания системных часов CLOCK_REALTIME программу необходимо запускать от имени «супер пользователя» для этого используйте команду sudo. Например, для запуска программы скомпиленной, по описанной выше технологии наберите в консоле: sudo ./ts
Пример:
В примере значение системных часов устанавливается в ноль, затем ставится задержка на 5 секунд, считывается показание системных часов и результат выводится в консоль.
#include < stdio.h > //Для printf
#include < time.h > //Для clock_settime , clock_gettime
int main (void)
{
// Структура с временем для установки системных часов
// 0 –секунд, 0 - наносекунд
struct timespec s_time = {0,0);
// Структура для сохранения считанного времени
struct timespec t_time;
// Устанавливает системные часы
clock_settime (CLOCK_REALTIME, & s_time);
// Задержка на 5 секунд
sleep (5);
// Определяем текущее время
clock_gettime (CLOCK_REALTIME, & t_time);
// Выводим определенное время на экран консоли
printf (“Время: %ld секунд %ld наносекунд\n”, m_time.tv_sec, m_time.tv_nsec);
return 0;
}
| |
Результат:
Время: 5 секунд 1089182 наносекунд
|
Смотри так же:
asctime,
asctime_r,
clock_getres,
clock_gettime,
clock_gettime,
ctime,
ctime_r,
difftime,
gmtime,
gmtime_r,
localtime,
localtime_r,
mktime,
strftime,
time
|