centos7(redhat7) 中localtime_r有一個BUG。具體過程如下:
step1 後臺進程啓動。
step2 用戶修改時區。
step3 後進進程在使用localtime_r取時間時,不會更新時區。取得時間還是舊的時間。但是localtime使用新的時區計算時間。
step4 此時再使用localtime調用後,localtime_r才使用新時區,計算時間。
PS, centos6無此問題。
BUG 2
centos7.5,進程使用gettimeofday (&tv,&tz);不會正確地取出時區來 tz.tz_minuteswest 總是0. 在手動使用timedatectl set-timezone Asia/Shanghai (時區參數隨意),配置一次時區,纔可以正常。
在centos7的系統中,增加一個定時器,用於查看/etc/localtime軟連接文件是否發生變化。如果有變化,則調用localtime一次。
這樣localtime_r就會使用新的時區。