Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX.CHAINIK
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX.CHAINIK с датами от 15 Jul 13 07:24:14 до 15 Jun 24 17:28:42, всего сообщений: 3153
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 729 из 3153 ================================== RU.LINUX.CHAINIK =
От   : Serguei E. Leontiev              2:5020/400         25 Jan 15 20:59:21
Кому : Alexey Vissarionov                                  25 Jan 15 20:59:21
Тема : Re: crontab... Что я делаю не правильно?
FGHI : area://RU.LINUX.CHAINIK?msgid=<1187499052@ddt.demos.su>+ee9f7e99
На   : area://RU.LINUX.CHAINIK?msgid=2:5020/545+54c50797
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Привет Алексей,

От 25 января 2015 г., 18:11:18 в fido7.ru.linux.chainik ты писал:
??>>>>> В какой доке написана необходимость этого
??>>>>> мероприятия после смены TZ?
??>>>> Проблема в ошибочной наивной реализации POSIX в
??>>>> glibc, который считывает tzdata один раз за время
??>>>> жизни процесса, игнорируя дальнейшие изменения.
??>>> Временная зона - свойство процесса, а не системы.
SL>> Твоя правда, только ты открой нормативную документацию
SL>> POSIX и прочитай, что именно является этим свойством.
SL>> Значение переменной окружения TZ - определяет правила
SL>> преобразования, которые устанавливаются вызовом tzset().
AV> Процесс остался тем же, но вызвал setenv(); что должно
AV> поменяться?

И в документации POSIX, и документации glibc - ясно же указано, что
tzset() устанавливает правила, согласно значению переменной TZ, текущему
значению.

И, насколько мне известно, tzset() работает так, как описано.

SL>> По POSIX тот же localtime() безусловно вызывает tzset().
SL>> Фактически же оно в glibc работает иначе, не так, как
SL>> описано в документации и это ошибка.
AV> Предлагаешь всякий раз заглядывать в /etc/localtime?

Это не единственный способ реализовать эквивалентность вызовов
localtime() и "(tzset(), localtime())".

??>>>> Будем посмотреть, вот ты оформишь ли сообщение об
??>>>> ошибке glibc? Или оставишь Linux в его убогом
??>>>> положении и далее.
??>>> NAB.
SL>> Перевод 'nab'
AV> ... предельно прост: not a bug.

Hу да это не ошибка, а целый букет ошибок:

1. Очевидно crond функционирует некорректно: пользователь вносит задание
согласно текущему состоянию временной зоны, а crond его исполняет
согласно состоянию временной зоны на момент старта (предположительно, он
сразу обращается к localtime() или tzset()). Вариантов три: свалить на
ошибку glibc (ИМХО, предпочтительный), обеспечить адекватный вызов
tzset() или описать в документации;

2. Функция localtime() работает не так, как описано в POSIX и своей
документации. Вариантов два: исправить функцию, либо исправить
документацию и отразить отличие от POSIX, что localtime() пользуется
результатом tzset() и вызывает его, в случае если он ещё ни разу не был
вызван ранее;

3. В случае, если избранный путь - послать POSIX со всеми остальными
лесом и править документацию. Тогда надо научить дистрибутивы Linux, при
обновлении tzdata, перезагружать всех демонов, которые используют
localtime(). Си речь об улучшениях конфигурации systemd, ибо SVR5 init с
этим явно не справится. :)

--
Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru

 
--- ifmail v.2.15dev5.4
* Origin: ГАИШ МГУ (2:5020/400)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.042032 секунды