我使用的是一个c++开源代码,它是一个".so“,放在一个服务器上。在Java client中,我将通过JNI包调用这个".so“。
现在我的问题是,我使用的“开源C++”代码不能处理任何错误。因此,如果C++部分发生了什么事情,服务器就会崩溃。所以我不能使用我的应用程序,直到我再次启动服务器。
我这里的问题是,有没有办法阻止由于".so“(C++代码)故障而导致的服务器崩溃?现在我也不能修改开源C++代码,因为我的日程安排很紧。
有人能给我提供一些想法或解决办法来阻止服务器因为".so“故障而崩溃吗?
发布于 2013-12-04 03:35:45
我假设你得到了SIGSEG或类似的东西。
您可以尝试捕获信号并进行一些特殊处理。我不推荐这样做,因为很难让代码干净地退出(内存泄漏等)。
更好的方法是启动一个新进程并在那里运行".so“。这样,无论代码变得多么糟糕,它都是一个独立的过程。如果它崩溃了,你的主服务器将会很好,只需要处理一个坏掉的管道(关闭的文件/通信通道)。
https://stackoverflow.com/questions/20359893
复制相似问题