Где указана / usr / share / zoneinfo?

Мы добавляем поддержку часовых поясов в наше приложение Ubuntu.

Информация о часовом поясе на моей машине находится в /usr/share/zoneinfo.

  1. Это всегда в этом каталоге? Если да, то где это указано ?
  2. Если нет, то есть ли системный вызов, аналогичный «gettimeofday (2)», который я могу сделать, чтобы выяснить, где он находится?
  3. [ 114]

    Заранее спасибо.

4
задан 2 April 2012 в 02:18

1 ответ

Местоположение поиска для часовых поясов кодируется в библиотеке C (где находятся различные функции, осведомленные о часовых поясах):

$ strings -a /lib/x86_64-linux-gnu/libc.so.6 | grep zoneinfo
/usr/share/zoneinfo

Код библиотеки C использует этот каталог в качестве препроцессора [ 111], так что нет никакой процедуры спрашивать, с каким значением он был скомпилирован.

Если вам нужно проанализировать данные часового пояса самостоятельно (в отличие от использования нескольких доступных подпрограмм библиотеки C), то жесткое кодирование /usr/share/zoneinfo должно подойти: если ваши целевые платформы следуют иерархии файловой системы Linux , вы должны быть в безопасности.

Если вас интересует только местный часовой пояс, прочитайте /etc/localtime, который будет копией соответствующего файла из /usr/share/zoneinfo.

0
ответ дан 2 April 2012 в 02:18

Другие вопросы по тегам:

Похожие вопросы: