Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
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
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 813 из 3153 ================================== RU.LINUX.CHAINIK =
От   : Serguei E. Leontiev              2:5020/400         24 Mar 15 13:42:07
Кому : Valentin Davydov                                    24 Mar 15 13:42:07
Тема : Re: crontab... Что я делаю не правильно?
FGHI : area://RU.LINUX.CHAINIK?msgid=<1187500403@ddt.demos.su>+f0a8769b
На   : area://RU.LINUX.CHAINIK?msgid=<1187499474@ddt.demos.su>+2bc042a6
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.LINUX.CHAINIK?msgid=<1187500404@ddt.demos.su>+d81fecac
==============================================================================
From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Привет Валентин,

От 15 февраля 2015 г., 19:40:12 в fido7.ru.linux.chainik ты писал:
SL>>>>> По POSIX тот же localtime() безусловно вызывает tzset().
SL>>>>> Фактически же оно в glibc работает иначе, не так, как описано в
SL>>>>> документации и это ошибка.
??>>>> Предлагаешь всякий
??>>>> раз заглядывать в /etc/localtime?
VD>>> А в чём проблема, собственно, заглянуть? Файлец маленький, в
VD>>> одну страницу помещается.
??>> Каждый раз считывать - лишний системный вызов.
VD> Так оно ж всё равно вызывается не просто так, а ради того,
VD> чтобы лог записать, хедер отослать или ещё какую штуку сдеалть,
VD> которая и сама  по себе системные вызовы требует, причём, в
VD> отличие от считывания  1 страницы из кэша, занимает дорогие
VD> ресурсы вроде диска или сети.

Это немного дороже, чем 1 страница. В типичном случае, это open() на
символическую ссылку "/etc/localtime" и read() небольшого объёма. В
прочем, при наличии localtime_r() такая реализация тоже была бы приемлема.

??>> Однако, т.к. glibc уже давно библиотека практически одной
??>> системы GNU/Linux, то есть же в GNU/Linux эффективные
??>> средства мониторинга изменений файлов.
VD> Это да. В других системах особенности поведения localtime()
VD> чётко описаны в документации, например;
VD> The function localtime() uses tzset(3) to initialize time
VD>    conversion information if tzset(3) has not already been called
VD> by the process.

Hу потребители более строгие, так что немного честнее, а так, те же
грабли, только в профиль. Это получается уже почти localtime_r(). И
каждый производитель программы или демона должен выбирать между:
- забить и удовлетворится однократным считыванием;
- звать tzset() на сигнал HUP (/etc/rc.d/XXXX reload);
- каждый раз звать tzset();
- делать это по расписанию (типа в 02:01) или по таймауту, например, раз
в 10^6 - 10^9 тактов процессора;
- самостоятельно мониторить изменения (технически возможно, ибо
устройство tzset() документировано, но это всё же его потороха и
программам негоже зависеть от них).

??>> Как вариант, периодическое считывание по расписанию.
VD> Авторы демонов этой возможностью почему-то неохотно
VD> пользуются...

Возможно они думают, что когда нибудь эту ошибку реализации localtime()
в glibc исправят. Хотя, по хорошему, могли бы перейти на честный
localtime_r().

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

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

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