Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux epoll_等待并更改系统时间返回_Linux_Embedded Linux_Epoll - Fatal编程技术网

Linux epoll_等待并更改系统时间返回

Linux epoll_等待并更改系统时间返回,linux,embedded-linux,epoll,Linux,Embedded Linux,Epoll,我的应用程序使用epoll_wait对IO事件执行定时等待。如果没有发生任何事件,epoll_wait将在超时后返回,我的应用程序将继续 在测试过程中,有人将系统时钟向后拨了一天,我的应用程序中使用epoll_wait的部分停止工作24小时。显然,这是一个问题 我已经到处寻找一些东西,可能让我的应用程序知道时间已经改变(例如,一个信号),但我没有找到任何东西 有没有办法应对这样突然的时间变化 使用基于单调时间的计时器(例如,timer_create(2))生成信号并执行阻塞epoll_wait,

我的应用程序使用epoll_wait对IO事件执行定时等待。如果没有发生任何事件,epoll_wait将在超时后返回,我的应用程序将继续

在测试过程中,有人将系统时钟向后拨了一天,我的应用程序中使用epoll_wait的部分停止工作24小时。显然,这是一个问题

我已经到处寻找一些东西,可能让我的应用程序知道时间已经改变(例如,一个信号),但我没有找到任何东西


有没有办法应对这样突然的时间变化

使用基于单调时间的计时器(例如,timer_create(2))生成信号并执行阻塞epoll_wait,并检查-1返回代码和设置为EINTR的errno。

epoll_wait的Linux内核使用时钟单调,因此它应该不受系统时钟变化的影响。(我对此进行了调查,因为我发现了一个类似的问题,并想将epoll_wait作为一个可能的原因加以考虑。)在v2.6.37之前,它使用的jiffies也是单调的


我已经向epoll_wait手册页提交了一份声明来澄清这一点。

奇怪的是,epoll_wait手册页并没有真正指定您在超时时等待的时钟。