Почему вызов является стандартной библиотечной функцией в препятствовавшем обработчике сигналов?
Это объясняется в документации GNU LibC.
Если вы вызываете функцию в обработчике, убедитесь, что она реентерабельна по отношению к сигналам, или убедитесь, что сигнал не может прервать вызов связанной функции.
И на всякий случай, вот страница Википедии о реентерабельных функциях.
Компьютерная программа или процедура называется реентерабельной, если она может быть безопасно вызвана снова до завершения предыдущего вызова (т.е. она может безопасно выполняться параллельно).
Все работает нормально и все такое, пока вы не столкнетесь с загадочными ошибками, которые невозможно отследить :)
сигнал man 7
даст у вас есть список системных вызовов, которые можно безопасно вызывать из обработчика сигналов. Он также описан в POSIX.
Поскольку функция библиотеки не может быть повторно входимой.
Это не только проблемы с повторным входом, в зависимости от сигнала, являющегося службами, вы также хотите избежать случайных вызовов malloc () (например, asprintf ()) и других вариативных расширений (например, printf ()).