作者 主題: 請問如何知道某一支程式有沒有在執行?  (閱讀 2104 次)

0 會員 與 1 訪客 正在閱讀本文。

flair

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
想寫一支watch dog監控另一支aaa程式是否正常執行,當aaa程式停止或異常時,能夠偵測到並重新啟動aaa

有看到用sh的程式
#!/bin/sh


PID1=$(ps | grep aa.tcl | grep "tclsh" | cut -d ' ' -f 2);
PID2=$(ps | grep bb.tcl | grep "tclsh" | cut -d ' ' -f 2);

kill $PID1;
kill $PID2;

echo "Stop Web Complete";


echo "Start Web Complete";




但是想要用c寫..不知道有沒有人可以教一下
« 上次編輯: 2009-11-13 15:04 由 flair »

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org

打開 /proc/ 目錄內所有數字開頭的目錄,裡面有一個檔案名稱為 status。該檔案內有 Name: xxxx 這類敘述,xxxx 就是執行的程式檔案名稱。你可以逐一使用 opendir、readdir 等函數遊走,然後開啟後讀取判斷即可達成你需求。

若你具備 root 權限,除了開啟 status 檔案內容一外,該目錄內 exe 該 symlink 連結目的就是跑的程式路徑+檔名,使用 readlink 函數可以取出。

要注意上面的方式只有支援 linux 系統環境。
I am kenduest - 小州

my website: http://kenduest.sayya.org/