10.05 更新时钟
首先,更新系统时间要求程序具有相应的权限,即 CAP_SYS_TIME
。
settimeofday
允许我们以 timeval
结构体表示的时间设置系统时间,不过,虽然它的精度很高,但是我们的计时器不一定能够达到这么高的精度,因此在微秒级设定的时间也可能是不准确的。
stime
类似,但是只能设置秒级时间。
adjtime
函数则是可以减慢或者加快始终速度,从而温和地完成时间调整。不过 adjtime
在执行的时间里可能无法完成所有的时间调整,这个时候剩余未修改的时间将保存在第二个参数中。(settimeofday
可能会突然改变系统时间,从而使得依赖绝对时间戳工作的程序不能正常运行,比如数据库或者 make
。)