Какие часы установлены с помощью stime () и clock_settime ()? Как я могу читать в человеке, оба могут установить время Linux. Функция stime () устанавливает «идею времени», а clock_settime () с параметром CLOCK_REALTIME может устанавливать «RTC всей системы».
1) Что это за часы?
2) Есть ли различия?
3) Они также устанавливают часы HW?
4) Если нет: кто-нибудь знает умный способ установить hwclock в C / C ++ без использования ioctl ()?
std::system("/sbin/hwclock -w")
?
Извините за этот короткий ответ, я на самом деле просто хотел сделать комментарий, но он мне этого не позволил.
Хорошо, чтобы помочь вам по вашему вопросу 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
Я отвечаю на мой вопрос с помощью 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.
Заключение
clock_settime()
а также stime()
являются функциями установщика, используемыми для установки системного времени, а не аппаратных часов, которые не зависят от машины.
Когда система загружается, системное время устанавливается с помощью аппаратных часов.
У Linux есть команда для обработки аппаратных часов, которая hwclock
, Для получения дополнительной информации проверьте эту ссылку: http://linux.die.net/man/8/hwclock