Обработка POSIX-сигналов: vsnprintf () и localtime_r() - безопасные функции?

Обработка POSIX-сигналов: vsnprintf () и localtime_r() - безопасные функции?

28.01.2011 11:59:22 Просмотров 17 Источник

Имеется в виду их использование в обработчике сигналов. Я знаю, что в списке безопасных функций из man signal для Linux RedHat их нет.

И все таки, какие есть мнения о возможности их вызывать, допустим обработчик не прерываем, тогда можно? Или можно, только для определенных участков прерываемого кода?

Обновление

Собственно сомнения в безопасности этих функций состоят в следующем:

vsnprintf () - используется ли в vsnprintf пара va_start() ... va_end() и если да, то используют ли va_start() ... va_end() неатомарные действия с нелокальными структурами данных?

Если на любой из этих вопросов ответ отрицательный, то vsnprintf() безопасна (в предположении, что она запрограммирована без malloc()).

localtime_r () - откуда она берет timezone ? Если не из файлов (а откуда ?), то безопасна.

Заранее благодарен за комментарии.

У вопроса есть решение - Посмотреть?

Ответы - Обработка POSIX-сигналов: vsnprintf () и localtime_r() - безопасные функции? / Обработка POSIX-сигналов: vsnprintf () и localtime_r() - безопасные функции?

Является ответом!
cy6erGn0m

29.01.2011 12:28:24

Если нет уверенности, то лучше не рискуйте. Если есть возможность, то лучше делайте работу с "опасными" функциями в другом потоке, а обработчик сигналов пусть просто "пинает" этот поток и конфигурит необходимые параметры.

UPD:

Также посмотрите на следующее:

https://stackoverflow.com/questions/916056/master-worker-threads-and-signal-handling

http://www.cognitus.net/html/howto/pthreadSemiFAQ_8.html

UPD 2: Ответ на дополнительные рассуждения автора вопроса

Слишком много предположений. Нельзя полагаться на такие вещи. Сегодня вы возможно "проскочите", но никто не гаратирует, что завтра кто-нибудь не "оптимизирует" vsnprintf и она вдруг не перестанет быть безопасной. Если спецификация не гарантирует её безопасность, то считаем её опасной. Любые догадки или даже раскопки её реализации ничего не гарантируют.

Закрыть X