我正在設計一個監視進程。監視過程的任務是監視幾組配置的過程。當監視進程檢測到進程已經停止時,它需要重新啓動進程。設計用於監視和重新啓動進程的監視進程
我正在開發我的linux系統的代碼。下面是我如何開發一個小樣機 - 提供有關需要監控的各種流程的詳細信息(路徑,參數)。 - 監控進程執行以下操作: 1.安裝SIGCHLD的信號處理程序 2.使用fork和execv啓動要監控的進程。存儲子進程的PID。 3.當孩子失蹤時,家長會收到SIGCHLD 4.現在會調用信號處理程序。處理程序將在之前存儲的pid列表上運行for循環。對於每個pid,它將檢查/ proc文件系統是否存在與pid對應的目錄。如果該目錄不存在,則重新啓動該過程。
現在,我的問題是這樣的 - 上述方法(檢查/ proc文件系統)檢查標準或推薦的機制檢查進程是否正在運行,或者我應該做一些事情,如爲ps命令創建管道和循環通過ps的輸出? - 有沒有更好的方法來達到我的要求?
問候。
我希望我的主要工作儘可能少的工作,以便cpu資源不被它消耗。在這種情況下,上述解決方案不會更好嗎? (在信號處理程序中執行waitpid並在主要休眠) – user500949 2010-11-09 02:48:34