在Linux或FreeBSD中,有没有办法在指定时间接收来自系统的通知?我正在考虑类似于 Linux 中的 inotify 对文件系统事件所做的事情。
有一种使用 cron 的方法,但我问是否有一个可以以编程方式调用的较低级别的接口。如果 cron 是执行此类任务的“官方”Unix 接口,我也想知道。
答案1
我知道有两个低级接口:
一种是简单地执行 sleep() 直到您想要接收通知的那一刻。 sleep 调用由 glibc 提供。
另一种方法是alarm()系统调用。它允许您告诉内核,在经过定义的时间后,它应该向调用进程发送 SIGALRM。您很可能必须创建一个适当的信号处理程序,然后它才能执行您想要执行的操作。
对于这两种方法,您无法设置想要收到通知的绝对时间。相反,您必须获取当前时间,并根据它计算您的进程需要等待多长时间才能被唤醒或发出警报。
参考文献(在 Linux 上):man 3 sleep;人2报警;