Linux下通過程序名檢測程序是否在執行

2021-06-11 11:13:17 字數 590 閱讀 3957

此方測試可行,其它見注釋。

int isrun(string & procname)

struct dirent *ent = readdir(lpdir);

//讀取/proc目錄下面所有目錄 主要是讀取目錄名為數字的檔案,每個執行中的程序在此都有乙個以程序pid為名稱對應的目錄

//所以我採取的訪求是依此的將這些目錄下面的cmdline檔案裡的字元讀取提取,然後和要檢測的程序名對比。也可以讀取其它檔案裡的資訊分析出程序名,此處只是

一種方法。

while(null != ent)

;int len = fread(buf, 1, sizeof(buf)-4, fp);

string str= buf;

trimstr(str);

//procname在執行

if ( str == procname )

fclose(fp);

}                 }}

ent = readdir(lpdir);

}if(null != lpdir)

return iret;

}

在linux中通過程序名獲得程序id

當需要kil乙個程序時,需要提供乙個pid 使用kill命令 或提供乙個程序名 使用pkill命令 pkill是如何通過程序名得到程序id的?在linux中程序是通過檔案來表示的,資訊都儲存在 proc pid目錄中。在 proc pid status檔案的第一行,儲存有程序名,和使用者輸入的進行比...

linux下程序名和程序id的轉換

1.由程序名得到程序id pidof xx 其中xx是程序名 2.由程序id得到程序名 readlink proc exe,其中 是程序的id 3.如果是shell程式,因為shell的程序名是相應的shell名,所以不能直接根據shell指令碼的名字來獲取其程序id,可以由以下兩種方法 以sh為例...

Linux下檢測程序是否存在

這個問題看起來好像很簡單,ps ef grep xx 一下就行啦!這樣做當然可以,但是如果我們考究起效能來,這恐怕不是個好辦法。假設我們現在要監測某程序是否存活,每分鐘檢查一次,用上面的辦法就要每分鐘執行一次ps命令並且做一次grep正則查詢。這點開銷在伺服器上似乎不算什麼,然而如果我們要在同一節點...