Linux 下獲取程序PID

2021-09-02 02:54:03 字數 1128 閱讀 9698

linux查詢pid有多種方式,可通過遍歷/proc目錄下程序執行資訊及shell ps命令

1. 遍歷/proc目錄

linux下每個執行的程序都會在/proc目錄下建立該程序pid目錄,/proc/pid 目錄下有 status, cmdline等描述程序執行引數,狀態等資訊. 執行可能沒有命令列引數,cmdline檔案可能為空. 我們選擇 status 檔案,比較 status 中 name 字段即可

// 根據程序名稱查詢pid

pid_t getpidbyname(const char *pname)

while ((pde = readdir(pdir)))

// 讀取 /proc/$pid/status檔案

sprintf(buff, "/proc/%s/status", pde->d_name);

pf = fopen(buff, "r");

if (pf)

} }

closedir(pdir);

return 0;

}

二. ps 命令

通過上述截圖發現,如果程序名稱過長,會被截斷,這種情況下無法通過status匹配程序名稱,而ps命令卻完美解決上述問題,可以通過管道接收shell執行結果

int findpidbyname(const char *pname)

'",pname); // 開啟管道,執行shell命令

file *fp=popen(szproquery,"r");

char szbuff[10];

while(fgets(szbuff,10,fp)!=null) // 逐行讀取執行結果

pclose(fp); // 關閉管道指標,不是fclose()很容易混淆

return szpid;

}

Linux下CPP建立子程序並獲取PID後殺掉程序

pid t fork void intexecl const char path,const char arg,int kill pid t pid,int sig fork1 建立乙個子程序,一般情況子程序的pid和父程序的pid相差1,所在標頭檔案 include。這個函式的返回值很重要,在父程...

Linux下檢視指定程序的PID

pgrep l name root master pgrep l python 45086 python3 pgrep的引數 檢視指定名稱的程序資訊 預設只顯示pid 1 root master pgrep ssh 2 3686 3 7907 4 8815 5 12874 同時顯示pid和proce...

iOS獲取程序PID資訊

ios下獲取系統所有程序pid資訊,有需要的朋友可以參考下。在ios下獲取系統所有的程序pid 資訊 需要用到c部分的 以下 在xcode6 arc下執行測試通過 補充 必須包含的標頭檔案 include include include 返回所有正在執行的程序的 id,name,占用cpu,執行時間...