我正在编写一个小型库,以FILE *指针作为输入。
如果我立即检查这个FILE *指针并发现它导致了一个段错误,是更正确的处理信号,设置errno并正常退出;还是不做任何处理,并使用调用者安装的信号处理程序,如果他有的话?
普遍认为“库不应该导致崩溃”。但我的想法是,由于这个特定的信号肯定是调用者的错误,那么我不应该试图向他隐藏这些信息。他可能已经安装了自己的处理程序来以自己的方式对问题做出反应。同样的信息可以通过errno获得,但是SIGSEGV的默认处理方式有很好的原因,通过将信号传递给上层让调用者处理他自己的错误或崩溃并保护他免受进一步的损害,从而尊重这种哲学。
您是否同意这种分析,或者您是否认为在这种情况下处理SIGSEGV有一些令人信服的理由?