3

是否可以在 Linux 中使用标准 C++ 在系统时间到达指定的日期/时间时获得通知(当然假设我的进程已启动)?

我可以将计时器设置为我需要等待的时间,但是如果用户更改系统时间会发生什么?系统可以通知我用户更改了系统时间以重置我的计时器吗?

4

4 回答 4

4

Linux 内核有这样的系统调用,尽管它们没有集成到 libc API 中。您可以创建一个计时器,从内核为其获取文件描述符,然后对描述符执行 select 或 epoll 调用,以便在计时器触发时得到通知。

它的手册页: http: //www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html

于 2012-05-08T10:23:12.787 回答
1

当然,只需编写代码来做你想做的事。例如:您可以保留所有此类计时器的列表,它们应该被触发的日期/时间,以及它们发生时应该执行的代码。然后,您可以每隔一段时间检查一下时间,看看是否超过了您的任何计时器应该触发的时间。如果是这样,解雇他们,将他们从列表中删除,然后继续你的业务。

于 2012-05-08T10:10:39.000 回答
1

请参阅“at”命令的文档(man at)

例如,at 可以在给定时间(例如下午 2:35)向您发送电子邮件。

at 14:35
warning: commands will be executed using /bin/sh
at> mail -s "It is 2:35 PM" dbadmin < /dev/null
at><EOT> # After CTRL/D pressed.
job 9 at Tue May  8 14:35:00 2012
于 2012-05-08T12:32:01.513 回答
-1

您可以计算从程序开始到事件发生的时间,并调用

sleep (difftime-1); 

然后你可以控制时间是否被重置,但这样你只能将时间更正到未来 - 如果时间被设置回来,你会跳过事件。

于 2012-05-08T10:39:15.180 回答