clock_settime()

Установить значение часов

Прототип:

#include <time.h>
int clock_settime( clockid_t id,
const struct timespec *tp );

Аргументы:

id
Идентификатор часов CLOCK_REALTIME или CLOCK_MONOTONIC системного времени, или идентификатор часов, возвращаемый ClockId().
tp
Указатель на структуру struct timespec, в которой функция clock_gettime() сохранит время, имеющей следующие поля:

Библиотека:

libc

Описание:

Функция clock_settime() устанавливает значение часов id временем, указанным в структуре tp.


Note:
  • Следует осторожно устанавливать дату в период переключения часового пояса с летнего времени (DST) на стандартное время. Когда часовой пояс меняется на стандартное время, местное время возвращается на один час назад (например, 2:00 становится 1:00 утра). Местное время в этот час неоднозначно (например, 1:14 утра приходится дважды утром, когда часовой пояс переключается на стандартное время). Чтобы избежать проблем, используйте время UTC для установки даты в этот период.

  • Нельзя установить время, если идентификатор id равен CLOCK_MONOTONIC.

  • Для установки времени требуются права (привелегии) суперпользователя.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EINVAL
Произошло одно из следующих событий:
EPERM
У процесса нет прав суперпользователя для изменения времени.

Примеры:

/* Эта программа переводит часы на 1 день вперед. */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main( void )
{
struct timespec stime;
if ( clock_gettime( CLOCK_REALTIME, &stime ) == -1 )
{
perror( "getclock" );
return (EXIT_FAILURE);
}
stime.tv_sec += (60 * 60) * 24L; /* Добавить один день */
stime.tv_nsec = 0;
if ( clock_settime( CLOCK_REALTIME, &stime ) == -1 )
{
perror( "setclock" );
return (EXIT_FAILURE);
}
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1 TMR

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct timespec, clock_getres(), clock_gettime(), errno, mktime()




Предыдущий раздел: Описание API системной библиотеки