栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Linux中检测系统时间的变化?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Linux中检测系统时间的变化?

您可以使用timerfd_create(2)创建一个计时器,然后

TFD_TIMER_CANCEL_ON_SET
在设置它时用选项标记它。将其设置为将来不可行的时间,然后在其上进行阻止(使用轮询/选择等)-如果系统时间更改,则计时器将被取消,您可以检测到。

(这是systemd的工作方式)

例如:

#include <sys/timerfd.h>#include <limits.h>#include <stdio.h>#include <unistd.h>#include <errno.h>int main(void) {        int fd = timerfd_create(CLOCK_REALTIME, 0);        timerfd_settime(fd, TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET,  &(struct itimerspec){ .it_value = { .tv_sec = INT_MAX } },  NULL);        printf("Waitingn");        char buffer[10];        if (-1 == read(fd, &buffer, 10)) {     if (errno == ECANCELED)  printf("Timer cancelled - system clock changedn");     else  perror("error");        }        close(fd);        return 0;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号