Я пишу небольшую библиотеку, которая принимает указатель FILE * как входной.
Если я сразу же проверю этот указатель FILE * и найду, что он ведет к segfault, правильнее ли обрабатывать сигнал, устанавливать errno и изящно выйти; или ничего не делать и использовать обработчик обработчика установленного звонящего, если он имеет один?
Преобладающая мудрость, кажется, "библиотеки никогда не должны вызывать крушения". Но я думаю, что, поскольку этот конкретный сигнал, безусловно, является ошибкой вызывающего абонента, тогда я не должен пытаться скрывать эту информацию от него. У него может быть установлен собственный обработчик, чтобы реагировать на проблему по-своему. Та же самая информация может быть получена с помощью errno, но назначение по умолчанию для SIGSEGV было установлено по уважительной причине, и передача сигнала подтверждает эту философию либо заставляя вызывающего абонента обрабатывать его ошибки, либо путем сбоя и защиты от дальнейшего повреждения,
Согласны ли вы с этим анализом, или вы видите какую-то вескую причину для обращения с SIGSEGV в этой ситуации?