2013-12-03 6 views
0

Я использую код с открытым кодом C++, который выполнен как «.so» и размещен на сервере. Из Java-клиента я буду называть это «.so» через пакет JNI.Избегайте сбоя сервера из-за сбоя «.so»

Теперь моя проблема в том, что код «open source C++», который я использую, не обрабатывает никаких ошибок. Поэтому, если что-то происходит в части C++, сервер становится разбитым. Поэтому я не могу использовать свое приложение, пока не запустил сервер.

Мой вопрос здесь в том, есть ли способ остановить сбой сервера из-за ошибки «.so» (C++)? Прямо сейчас я также не в состоянии изменить код Opensource C++, поскольку я нахожусь в плотном графике.

Может ли кто-нибудь дать мне несколько идей или поработать над тем, чтобы остановить работу сервера из-за сбоя «.so»?

+0

Прекратите использование мусора с открытым исходным кодом или исправьте его. – EJP

ответ

1

Я предполагаю, что вы получаете SIGSEG или подобное.

Вы можете попытаться поймать сигнал и выполнить специальную обработку. Я не рекомендую это, потому что трудно получить код для выхода из строя (утечки памяти и т. Д.).

Лучшим способом было бы начать новый процесс и запустить там «.so». Таким образом, независимо от того, насколько плохо получается код, это отдельный процесс. Если он выйдет из строя, ваш главный сервер будет в порядке, только для разлома трубы (закрытого файла/канала связи).

+0

Спасибо за ваш ответ. Я называю «.so» из Java-клиента. было бы здорово, если бы я привел пример для этого в Java. – user2881263

+0

Посмотрите http://stackoverflow.com/questions/287633/java-c-like-fork @ user2881263 – Sorin

+0

@Sorin Я сделал это в прошлом, имея вторичный процесс, выставляющий собственную библиотеку через RMI. Работает хорошо. – Samhain

Смежные вопросы