1

サーバーLinuxデーモンを書いています。致命的なエラー(サーバーのリッスンの失敗、セグメンテーション違反など)が発生した場合にデーモンが何をすべきかについて、UNIX/Linuxコミュニティにどのプロトコルがあるのか​​知りたいです。私はすでにシステムログですべてを実行しましたが、致命的なエラーをどうするか知りたいです。ログに記録して、何もしない無限のループで実行し続ける必要がありますか?ログに記録して終了する必要がありますか?ここで行う標準的なことは何ですか?どうすればよいですか?

デーモンはC++で記述されており、カスタム例外システムを使用してPOSIXエラーコードをラップしているので、いつ致命的な事態になるかがわかります。

4

1 に答える 1

3

「致命的なエラー」には程度があります。

  • サーバーがリッスンに失敗するのは、一時的な問題である可能性があります。デーモンはおそらく接続を試行し続け、おそらく定期的に再試行し、ゆっくりと (1 秒、2 秒、4 秒など) 後退するはずです。

  • seg fault をキャッチした場合、おそらく最善の方法は、デーモンを再実行して、それ自体を再起動することです。もちろん再発するかもしれません。

  • 何もしない無限ループに入ってはいけません。それを行うのではなく、終了する必要があります。ループが無限ではないが、シグナルなどによって壊れる可能性がある場合は、おそらく何もしないで問題ありません。pause()CPU 時間を消費せずに何もしない方法として、システム コールをお勧めします。

  • 終了する前に、何をしているのか、その理由をログに記録する必要があります。

于 2012-05-07T02:10:50.700 に答える