Для вашего собственного кода да, реентерабельность и поточнобезопасность - это характеристики, которые вам нужны, так как в зависимости от того, как вы настроили механизм обработки сигналов, ваш обработчик сигналов может сам прерваться другим сигналом.В общем, старайтесь выполнять как можно меньше работы внутри обработчика сигнала.Установка флагов для запуска специального кода в обычном потоке программы - это, вероятно, все, что вам следует делать.
Для функций в ОС, которые вы можете вызывать, проверьте man 7 signal
для списка того, что безопасно вызывать.Обратите внимание, что malloc()
и free()
являются , а не в списке.API-интерфейсы синхронизации pthread также отсутствуют в списке, но я думаю, что некоторые из них должны быть безопасными для вызова, поэтому вы можете безопасно установить глобальный флаг в обработчике сигнала.