linux c程序監控

2021-09-25 09:08:41 字數 678 閱讀 1519

我們經常需要實現程序監控,如果某一程序異常退出或是跑飛則立即重啟。通常使用的有2種方法:

一.supervisor來管理程序。

二.自己寫程式來監管。

對於1而言,有些檔案系統中不支援,需要移植安裝。

對於2而言,不少都是單獨寫個監管程式,通過寫入檔案pid定時檢查程序pid是否存在,或是檢視是否有此程序名存在。個人覺得不太實用,遇到除錯時或是其他操作時,靈活性太差。

本案是模仿supervisor,使用註冊監控程式,來實現管控。功能予以實現如下:

1,每個程序往往有如下三個狀態。

typedef enum _cmdtype

cmdtype_t;

2.程序管控結構體

typedef struct msgstructmsgstruct;
3.所程序帶引數

typedef struct argstr_targstr;
本案所使用的是訊息佇列進行通訊,大家可以根據自己的需求進行更改。

異常處理:

如果程式註冊監管時發現之前的pid或程序路徑存在,kill掉之前的程序。

2.如果程式異常退出則根據路徑,和引數重啟程序。

3.如果程式取消,或是人為退出或暫停,則不重啟該程序。

**鏈結如下

Linuxc 建立與監控多個子程序

include include include include include 子程序個數 define sub pro count 10 處理子程序的退出訊號 void sub quit signal handle int sig 父程序的事件迴圈 void parentcycle 子程序的事件迴...

Linux C程序 執行緒

1 程序間通訊 庫 在使用者空間是不可能實現程序通訊,可通過linux核心建立物件來通訊 pid t pid 程序號的型別定義 pid fork 建立程序 if pid 0 子程序 if pid 1 父程序 2 執行緒間通訊 庫 在使用者空間可以實現執行緒間通訊,通過全域性變數通訊 pthread ...

linux c 程序學習

1.fork 由於fork後的父程序與子程序的優先順序是一樣的,所以會存在父程序已經退出了而子程序還在執行,這時候的子程序就是孤兒程序,會被init程序收養,所以這時候getppid得到的1。int main exit 0 2.vfork 由vfork也是用來建立程序,但是子程序是共享父程序的位址空...