2012-05-07 4 views
1

Я пишу сервер Linux daemon. Я хочу знать, какой протокол находится в сообществе UNIX/Linux для того, что должен делать демона, когда он сталкивается с ошибкой fatal (например, сбой сервера, ошибка сегментации и т. Д.). Я уже сделал все это с системным журналом, но я хочу знать, что делать с фатальной ошибкой. Должен ли я регистрироваться и продолжать работать в бесконечном цикле do-nothing? Должен ли я войти и выйти? Какая стандартная вещь здесь и как это сделать?Обработка ошибок в Linux Daemon

Демон написан на C++, и я использую настраиваемую систему исключений для обертывания кодов ошибок POSIX, поэтому я буду знать, когда все происходит фатально.

ответ

3

Существуют градусы «фатальной ошибки».

  • Сервер, который не может быть прослушан, возможно, является временной проблемой; ваш демон, вероятно, должен продолжать пытаться подключиться, возможно, периодически повторять попытку и медленно отступать (1 секунда, 2 секунды, 4 секунды и т. д.).

  • Если вы поймаете ошибку seg, возможно, лучше всего попытаться перезапустить себя, перезапустив демона. Конечно, это может повториться.

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

  • Обязательно зарегистрируйтесь, что вы делаете, и почему перед тем, как выйти.

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