我编写了一个插件系统(基于我使用dlopen
/ dlclose
加载/卸载的共享库),这非常有用。
我的问题是,如果其中一个插件(库)包含对整个执行而言致命的内部错误(例如,假设某种分段违规),则整个程序崩溃。
我想避免这种情况。我知道有可能捕获像SIGSEGV
这样的信号(我认为signal.h
)。但我想知道在这种情况下这是否真的是正确的方法。
我的程序也是多线程的。所以我必须知道哪个插件(或至少是哪个线程)产生了错误。
实际上我只是想在发生致命错误时重新加载库(或者在超时后完全卸载它)。什么是'标准'这样做的方法?