Что устанавливается с помощью stime () и clock_settime ()?

Какие часы установлены с помощью stime () и clock_settime ()? Как я могу читать в человеке, оба могут установить время Linux. Функция stime () устанавливает «идею времени», а clock_settime () с параметром CLOCK_REALTIME может устанавливать «RTC всей системы».

1) Что это за часы?
2) Есть ли различия?
3) Они также устанавливают часы HW?
4) Если нет: кто-нибудь знает умный способ установить hwclock в C / C ++ без использования ioctl ()?

[Обновление 1] Более конкретный пункт 4: что такое эквивалент C для std::system("/sbin/hwclock -w")?

5

Решение

Извините за этот короткий ответ, я на самом деле просто хотел сделать комментарий, но он мне этого не позволил.

Хорошо, чтобы помочь вам по вашему вопросу 4.
Некоторое быстрое исследование Google отправило меня на
https://github.com/karelzak/util-linux/blob/master/sys-utils/hwclock.c
Я не изучал этот код более 2 минут, но быстрый поиск показал строку 468:


static void set_hardware_clock(const time_t newtime, const bool universal, const bool testing)

редактировать:

Кстати, проверить википедию для него http://en.wikipedia.org/wiki/Util-linux
и человек RTC

1

Другие решения

Я отвечаю на мой вопрос с помощью MrSykkox.

Я читаю http://linux.die.net/man/4/rtc и взглянул на данные источники системных утилит. Оба показывают мне, что есть много разных типов HW-часов, таких как CMOS, RTC, KD и так далее. В части кода sys-utils я обнаружил, что некоторые дескрипторы устанавливаются путем открытия некоторых специальных устройств, таких как / dev / rtc, / dev / rtc0, / dev / misc / rtc, / dev / port, предназначенных исключительно для чтения. И, конечно же, я нашел ioctl () для настройки RTC.

Заключение

  1. Что это за часы?
    • Линукс знает не только 2 часа. Существует два класса: программные и аппаратные часы.
  2. Есть ли различия?
    • системные часы — это программные часы, поддерживаемые ядром
    • RTC могут работать, даже когда система находится в состоянии низкого энергопотребления (включая «выключено»), а системные часы не могут.
  3. Они также устанавливают часы HW?
    • системные часы устанавливают только часы, поддерживаемые ядром
  4. Кто-нибудь знает умный способ установить hwclock в C / C ++ без использования ioctl ()? Что такое эквивалент C для std :: system («/ sbin / hwclock -w»)?
    • RTC может быть установлен только самой несовместимой командой ioctl ().
1

clock_settime() а также stime() являются функциями установщика, используемыми для установки системного времени, а не аппаратных часов, которые не зависят от машины.

Когда система загружается, системное время устанавливается с помощью аппаратных часов.
У Linux есть команда для обработки аппаратных часов, которая hwclock, Для получения дополнительной информации проверьте эту ссылку: http://linux.die.net/man/8/hwclock

-1