我正在编写一个以 FILE * 指针作为输入的小型库。
如果我立即检查这个 FILE * 指针并发现它导致了段错误,那么处理信号、设置 errno 并优雅退出是否更正确;或者什么都不做并使用调用者安装的信号处理程序,如果他有一个?
流行的智慧似乎是“图书馆永远不应该导致崩溃”。但我的想法是,既然这个特定的信号肯定是调用者的错,那么我不应该试图向他隐藏那个信息。他可能安装了自己的处理程序,以自己的方式对问题做出反应。可以使用 errno 检索相同的信息,但设置 SIGSEGV 的默认配置是有充分理由的,并且通过强制调用者处理他的错误,或通过崩溃和保护他免受进一步损害,向上传递信号尊重这一理念.
您是否同意这种分析,或者您认为在这种情况下处理 SIGSEGV 有什么令人信服的理由?