1. 程式人生 > >檢查程序存在的5種方法

檢查程序存在的5種方法

檢查程序存在的五種方法:

  1. 通過wait()函式來監控: 這種方法只適用於父子程序之間,父程序可以使用該函式對子程序進行監控
  2. 訊號量和檔案鎖: 如果某個程序一直持有某個訊號量或者檔案鎖,並且該檔案鎖或者訊號量一直處於被監控狀態,那麼當可以獲取到訊號量和檔案鎖的時候說明該程序已經終止
  3. 程序間IPC通訊機制: 可以通過程序間通訊的某些機制來實現對某一個程序的監控,比如FIFO,可以給被監控程序管道的讀端,當寫端寫入失敗的時候,說明該程序也已經結束,還可以通過socket,讓被監控程序和監控程序間建立socket,監控該socket的連線狀態就可以知道被監控程序有沒有退出
  4. 檢視/prco/PID: 通過這種方式可以呼叫stat()等函式實現對程序的檢視
  5. kill(pid,0): 通過向被監控程序傳送sigid 為0的訊號,若返回失敗且errno為ESRCH說明該程序不存在

注意:4、5兩種方法有可能存在一定的風險,因為linux系統會重用程序ID,當被監控程序終止後,linux程序可能重用該程序ID,所以監控的可能不是之前的程序