我使用的是c ++开源代码,它是一个“.so”并放在服务器中。从Java客户端我将通过JNI包称为“.so”。
现在我的问题是,我正在使用的“opensource C ++”代码不会处理任何错误。因此,如果C ++部分发生了某些事情,服务器就会崩溃。所以在我再次启动服务器之前,我无法使用我的应用程序。
我的问题是,有没有办法阻止服务器崩溃,因为“.so”(C ++代码)失败?现在我也无法修改Opensource C ++代码,因为我的时间紧迫。
有人可以提供一些想法或解决方法来阻止服务器因“.so”失败而崩溃吗?
答案 0 :(得分:1)
我假设你得到了SIGSEG或类似的东西。
您可以尝试捕捉信号并进行一些特殊处理。我不建议这样做,因为很难让代码完全退出(内存泄漏等)。
更好的方法是启动一个新流程并在那里运行“.so”。这样,无论代码有多糟糕,它都是一个独立的过程。如果崩溃你的主服务器就没问题,只需要一个破损的管道(关闭文件/通信通道)来处理。