我正在编写一个服务器 Linux 守护进程。我想知道 UNIX/Linux 社区中的协议是什么,当守护程序遇到致命错误(例如,服务器无法侦听、分段错误等)时应该做什么。我已经完成了系统日志的全部工作,但我想知道如何处理致命错误。我应该记录并继续在一个无限的、无所事事的循环中运行吗?我应该登录并退出吗?在这里做的标准事情是什么,我该怎么做?
守护进程是用 C++ 编写的,我使用自定义异常系统来包装 POSIX 错误代码,所以我会知道什么时候是致命的。
存在一定程度的“致命错误”。
服务器无法监听可能是暂时的问题;您的守护进程可能应该继续尝试连接,可能会定期重试,然后慢慢退出(1 秒、2 秒、4 秒等)。
如果您发现 seg 错误,也许最好的办法是通过重新执行守护程序来尝试重新启动自身。当然,它可能会再次发生。
你不应该陷入无限的无所事事的循环;你应该终止而不是那样做。如果您的循环不是无限的,但可能会被信号或其他东西破坏,那么什么都不做也可以;我建议将pause()
系统调用作为一种在不消耗 CPU 时间的情况下什么都不做的方法。
您当然应该在退出之前记录您正在做什么以及为什么。