避免因“.so”故障导致服务器崩溃

时间:2013-12-03 19:26:37

标签: c++ java-native-interface shared-libraries

我使用的是c ++开源代码,它是一个“.so”并放在服务器中。从Java客户端我将通过JNI包称为“.so”。

现在我的问题是,我正在使用的“opensource C ++”代码不会处理任何错误。因此,如果C ++部分发生了某些事情,服务器就会崩溃。所以在我再次启动服务器之前,我无法使用我的应用程序。

我的问题是,有没有办法阻止服务器崩溃,因为“.so”(C ++代码)失败?现在我也无法修改Opensource C ++代码,因为我的时间紧迫。

有人可以提供一些想法或解决方法来阻止服务器因“.so”失败而崩溃吗?

1 个答案:

答案 0 :(得分:1)

我假设你得到了SIGSEG或类似的东西。

您可以尝试捕捉信号并进行一些特殊处理。我不建议这样做,因为很难让代码完全退出(内存泄漏等)。

更好的方法是启动一个新流程并在那里运行“.so”。这样,无论代码有多糟糕,它都是一个独立的过程。如果崩溃你的主服务器就没问题,只需要一个破损的管道(关闭文件/通信通道)来处理。