【问题标题】:Error Handling in Linux DaemonLinux 守护进程中的错误处理
【发布时间】:2012-05-07 02:00:15
【问题描述】:

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

守护程序是用 C++ 编写的,并且我使用自定义异常系统来包装 POSIX 错误代码,所以我会知道什么时候是致命的。

【问题讨论】:

    标签: c++ linux unix daemon


    【解决方案1】:

    存在“致命错误”的程度。

    • 服务器无法侦听可能是暂时的问题;您的守护进程可能会继续尝试连接,可能会定期重试,然后缓慢退出(1 秒、2 秒、4 秒等)。

    • 如果您发现 seg 错误,也许最好的办法是通过重新执行守护程序来尝试重新启动自身。当然,它可能会再次发生。

    • 您不应该陷入无限的无所事事循环;你应该终止而不是那样做。如果您的循环不是无限的,但可能会被信号或其他东西破坏,那么什么都不做也可以;我推荐 pause() 系统调用作为不消耗 CPU 时间的不做任何事情的方法。

    • 您当然应该在退出前记录您正在做的事情以及原因。

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 2011-03-06
      • 1970-01-01
      • 2023-03-10
      • 2011-09-19
      • 2023-03-19
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多