当达到指定的日期/时间时,Linux中的C / C ++是否可以获得通知?

时间:2012-05-08 10:06:38

标签: c++ c linux timer

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

我可以将计时器设置为我需要等待的时间,但如果用户更改系统时间会怎样?我是否可以通过系统通知用户更改了系统时间以重置我的计时器?

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

当然,只需编写代码即可完全按照您的意愿行事。例如:您可以保留所有此类计时器的列表,它们应该被触发的日期/时间以及发生时应执行的代码。然后经常你可以检查时间,看看你的计时器是否应该点火。如果是这样,请点击它们,将它们从列表中删除,然后继续开展业务。

答案 2 :(得分: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

答案 3 :(得分:-1)

您可以计算从节目开始到活动的时间,并致电

sleep (difftime-1); 

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