Linuxで標準のC++を使用して、システム時刻が指定された日時に達したときに通知を受け取ることはできますか(もちろん私のプロセスが稼働していると仮定します)?
待つ必要のある時間にタイマーを設定することもできますが、ユーザーがシステム時間を変更するとどうなりますか?ユーザーがタイマーをリセットするためにシステム時刻を変更したことをシステムから通知できますか?
Linux カーネルにはこのようなシステム コールがありますが、libc API には統合されていません。タイマーを作成し、カーネルからそのファイル記述子を取得し、記述子で select または epoll 呼び出しを実行して、タイマーが起動したときに通知を受けることができます。
そのマニュアルページ: http://www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html
もちろん、コードを書くだけで、まさにあなたが望むことを行うことができます。例: そのようなすべてのタイマーのリスト、それらが起動されるはずの日付/時刻、およびそれらが発生したときに実行する必要があるコードを保持できます。次に、時間をチェックして、タイマーのいずれかが起動する時間を過ぎていないかどうかを確認することができます。もしそうなら、それらを解雇し、リストから削除して、あなたのビジネスを続けてください.
「at」コマンドのドキュメントを参照してください (man 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);
その後、時間がリセットされたかどうかを制御できますが、この方法では時間を未来に修正することしかできません。時間が戻された場合、イベントをスキップしたことになります.