在 Linux 的 C/C++ 中是否可以在达到指定的日期/时间时收到通知
Is it possible in C/C++ in Linux to get informed when a specified date/time is reached?
是否可以
在 Linux 中使用标准C++在系统时间到达指定日期/时间时获得通知(当然,假设我的进程已启动)?
我可以将计时器设置为我需要等待的时间,但是如果用户更改系统时间会发生什么?我是否可以从系统收到用户更改了系统时间以重置计时器的通知?
Linux 内核有这样的系统调用,尽管它们没有集成到 libc API 中。您可以创建一个计时器,从内核获取它的文件描述符,并对描述符执行选择或 epoll 调用,以便在计时器触发时收到通知。
它的手册页:http://www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html
当然,只需编写代码即可执行所需的操作。例如:您可以保留所有此类计时器的列表,它们应该被触发的日期/时间,以及它们发生时应该执行的代码。然后,每隔一段时间,您就可以检查时间,看看它是否已经过了任何计时器应该触发的时间。如果是这样,请解雇他们,将其从列表中删除,然后继续您的业务。
请参阅"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
您可以计算从程序开始到事件的时间,然后调用
sleep (difftime-1);
然后你可以控制时间是否被重置,但这样你只能将时间更正到未来 - 如果时间被设置回来,你会跳过这个事件。
相关文章:
- 查询SQLite数据库中的日期
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- Log4cpp:以UTC/GMT时区打印日期
- 使用C++的日期库读取时间
- 日期格式为C++
- 函数如何通知用户它基于函数原型抛出异常?
- 如何在ECS框架中更新组件数据和通知系统
- 如何在 C++20 计时中为日期添加天数?
- 当 I2C 值在C++中发生变化时收到通知
- 如何在QTableView中排序和更改日期格式
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 是否有必要获取锁并在不需要唤醒线程时通知condition_variable?
- 如何在点击通知时捕获用户的点击操作
- 在通知提升间处理条件变量时未按住锁会导致问题
- 通知条件变量后使用互斥锁
- fmt 与 Howard Hinnant 的日期:为什么从 fmt::to_string "{}"?FMT 和日期的最佳实践?
- 在 Linux 的 C/C++ 中是否可以在达到指定的日期/时间时收到通知