Библиотека / код для динамической перезагрузки базы данных /usr/share/zoneinfo?
Поскольку система /usr/share/zoneinfo
база данных обновляется довольно часто, я хотел бы иметь возможность загружать ее (и перезагружать) динамически в очень долго работающей программе C++.
Теперь я знаю, что стандартная библиотека будет использовать эту базу данных, но я сомневаюсь, что она предлагает ее динамическую перезагрузку (или, по крайней мере, я ничего не смог найти в Google).
Есть ли какая-либо библиотека или код C или C++, которые я могу использовать для этого?
2 ответа
Я идиот. IANA, которая предоставляет базу данных zoneinfo, также предоставляет библиотеку для работы с ней. Как ни странно, я обнаружил это, прочитав исходный код postgresql.
Я не уверен, что этого достаточно, но это общественное достояние, поэтому, по крайней мере, я могу вставить его в свой код и согнуть под свои нужды.
localtime
и др. используйте информацию о преобразовании часового пояса, установленную tzset
Таким образом, вы обычно сможете перезагрузить эту информацию, установив TZ
к некоторому значению, звоня tzset
, установив его обратно и позвонив снова. Это будет работать с glibc, но вы должны проверить на других платформах.
В противном случае вы используете какой-то другой не-Posix API для доступа к базе данных zoneinfo, и вам следует взглянуть на средства, которыми обладает библиотека для перезагрузки своих данных.