alarm(2) - 当有人在等待时更改系统时间时它会怎么做?

时间:2010-11-24 17:45:06

标签: linux time alarm ntp

手册页说明alarm() arranges for a SIGALRM signal to be delivered to the process in _seconds_ seconds.如果有人(例如用户或ntpd)在闹钟待处理期间更改了系统时钟,会发生什么?警报的剩余时间是如何计算的?

1 个答案:

答案 0 :(得分:3)

首先,大多数负责任的管理员和xntpd通常不会在大块中调整时间。例如,这样做可以打破cron。

但即使他们这样做,警报也会使用setitimer()和ITIMER_REAL - 这意味着它仍然会 等待这么多时钟滴答声。假装系统时钟以100万Hz运行,每秒100万次。好的,所以2秒是200万个实时时钟滴答,系统时间设置的重要性。 setitimer()只是继续将其计数器减少到零。当它达到零时,SIGALARM被提升。从长远来看可能会有相当大的松懈,因为其他进程可能拥有cpu。 alarm()保证在n秒的MINUMUM中熄灭 - 实际经过的时间可能会稍长。

与系统时间混乱会破坏AppWorx或cron等调度软件。