我的库应该在错误的指针输入上处理SIGSEGV吗?

Use*_*abc 12 c error-handling signals errno shared-libraries

我正在编写一个小型库,它将FILE*指针作为输入.

如果我立即检查这个FILE*指针并发现它导致了段错误,处理信号,设置errno和正常退出是否更正确; 或者什么也不做,并使用调用者已安装的信号处理程序,如果他有一个?

流行的智慧似乎是"图书馆不应该导致崩溃".但我的想法是,由于这个特定的信号肯定是来电者的错,所以我不应该试图向他隐瞒这些信息.他可能安装了自己的处理程序,以自己的方式对问题作出反应.可以使用errno检索相同的信息,但是SIGSEGV的默认处置设置是有充分理由的,并且通过强制调用者处理他的错误,或者通过崩溃并保护他免受进一步损害来传递信号尊重这一理念. .

您是否同意这种分析,或者您是否看到在这种情况下处理SIGSEGV的一些令人信服的理由?

Mic*_*ker 7

接管处理程序不是图书馆业务,我会说除非明确要求,否则对它们有些冒犯.为了最大限度地减少崩溃,库可能会在某种程度上验证其输入.除此之外:垃圾进入 - 垃圾出来.


Jam*_*lin 5

流行的智慧似乎是"图书馆不应该导致崩溃".

我不知道你从哪里得到它 - 如果它们传递了无效的指针,你应该崩溃.任何图书馆都会.