在其他共享库中捕获sigsegv(插件系统)

时间:2014-11-22 01:19:04

标签: c++ multithreading shared-libraries sigsegv

我编写了一个插件系统(基于我使用dlopen / dlclose加载/卸载的共享库),这非常有用。

我的问题是,如果其中一个插件(库)包含对整个执行而言致命的内部错误(例如,假设某种分段违规),则整个程序崩溃。

我想避免这种情况。我知道有可能捕获像SIGSEGV这样的信号(我认为signal.h)。但我想知道在这种情况下这是否真的是正确的方法。

我的程序也是多线程的。所以我必须知道哪个插件(或至少是哪个线程)产生了错误。

实际上我只是想在发生致命错误时重新加载库(或者在超时后完全卸载它)。什么是'标准'这样做的方法?

0 个答案:

没有答案