簡體   English   中英

Linux守護程序中的錯誤處理

[英]Error Handling in Linux Daemon

我正在寫一個服務器Linux守護進程。 我想知道UNIX / Linux社區中的協議是什么守護進程遇到致命錯誤時應該做的事情(例如服務器無法監聽,分段錯誤等)。 我已經完成了系統日志的全部工作,但我想知道如何處理致命錯誤。 我應該記錄並繼續在無限循環中運行嗎? 我應該登錄並退出嗎? 這里有什么標准的事情,我該怎么辦?

守護進程是用C ++編寫的,我使用自定義異常系統來包裝POSIX錯誤代碼,所以我會知道什么時候是致命的。

存在“致命錯誤”的程度。

  • 服務器無法收聽可能是一個臨時問題; 你的守護進程可能應該繼續嘗試連接,可能會定期重試,然后慢慢退回(1秒,2秒,4秒等)。

  • 如果你遇到一個seg錯誤,最好的辦法就是重新執行守護進程,嘗試重啟自己。 當然,這可能會再次發生。

  • 你不應該進入一個無限的無所事事的循環; 你應該終止而不是那樣做。 如果你的循環不是無限的,但可能被信號或其他東西打破,也許什么也沒做好; 我建議使用pause()系統調用,以便在不消耗CPU時間的情況下不執行任何操作。

  • 你應該在退出之前記錄你正在做的事情和原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM