C++ Linux守护进程中的错误处理

C++ Linux守护进程中的错误处理,c++,linux,unix,daemon,C++,Linux,Unix,Daemon,我正在编写一个服务器Linux守护程序。我想知道在UNIX/Linux社区中,当守护进程遇到致命错误(例如服务器无法侦听、分段错误等)时,它应该执行什么协议。我已经用系统日志完成了全部工作,但我想知道如何处理致命错误。我应该记录并保持在一个无限的、不做任何事情的循环中运行吗?我应该登录并退出吗?这里的标准做法是什么?我该怎么做 >守护进程是用C++编写的,我使用一个自定义异常系统来包装POSIX错误代码,这样我就知道什么时候是致命的。< /P> < P>有“致命错误”的程度。 服务器无法侦听

我正在编写一个服务器Linux守护程序。我想知道在UNIX/Linux社区中,当守护进程遇到致命错误(例如服务器无法侦听、分段错误等)时,它应该执行什么协议。我已经用系统日志完成了全部工作,但我想知道如何处理致命错误。我应该记录并保持在一个无限的、不做任何事情的循环中运行吗?我应该登录并退出吗?这里的标准做法是什么?我该怎么做


<> >守护进程是用C++编写的,我使用一个自定义异常系统来包装POSIX错误代码,这样我就知道什么时候是致命的。< /P> < P>有“致命错误”的程度。
  • 服务器无法侦听可能是暂时的问题;您的守护进程可能会继续尝试连接,可能会定期重试,然后缓慢后退(1秒、2秒、4秒等)

  • 如果您发现一个seg故障,最好的办法可能是通过重新执行守护进程来尝试重新启动自身。当然,这可能会再次发生

  • 你不应该进入一个无限的无所事事的循环;你应该终止而不是那样做。如果你的循环不是无限的,但可能会被信号或其他东西打破,也许什么都不做是可以的;我建议使用
    pause()
    系统调用,这样可以在不消耗CPU时间的情况下不执行任何操作

  • 在退出之前,您当然应该记录您正在做什么以及为什么要这样做