linux查詢pid有多種方式,可通過遍歷/proc目錄下程序執行資訊及shell ps命令
1. 遍歷/proc目錄
linux下每個執行的程序都會在/proc目錄下建立該程序pid目錄,/proc/pid 目錄下有 status, cmdline等描述程序執行引數,狀態等資訊. 執行可能沒有命令列引數,cmdline檔案可能為空. 我們選擇 status 檔案,比較 status 中 name 字段即可
// 根據程序名稱查詢pid二. ps 命令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;
}
通過上述截圖發現,如果程序名稱過長,會被截斷,這種情況下無法通過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,執行時間...