通過程序名和程序號殺死相應程序

2021-09-01 06:22:53 字數 2074 閱讀 3882

在linux系統中,我們可以通過在/proc目錄下檢視所有的執行的程序。在/proc的目錄下,每個程序對應乙個資料夾,並且程序號與檔名相對應。在程序資料夾內有乙個status檔案,其第一行對應的對應的就是程序名。我們由此可以通過程序名來獲取相應的程序號。

#include

#include

#define file_name_size 256;

#define buff_size 512;

#define ok 0ul;

#define err 1ul;

ulong find_pid_by_name(int *pid, char *pname)

if(pid == null || pname == null)

return err;

dir *dir;

struct dirent *dirp;

file *fp;

char file_name[file_name_size];

char buf[buff_size];

dir = opendir("/proc");

if(null != dir)

while((dirp = readdir(dir)) != null)

if(strcmp(dirp->d_name, ".") == 0 || strcmp(dirp->d_name, "..") == 0 || dirp->d_type != dt_dir)

continue;

sprintf(file_name, "/proc/%s/status", dirp->d_name);

fp = fopen(file_name, "r");

if(fp != null)

if(fget(buf, buff_size-1, fp) == null)

fclose(fp);

continue;

sscanf(buf, "%*s%s", file_name);

if(!strcmp(pname, file_name))

//尋找到匹配程序名

fclose(fp);

*pid = atoi(dirp->d_name);

return ok;

closedir(dir);

//為查詢到相應的程序名,查詢失敗

printf("can't find the pid by %s \r\n", pname);

return err;

我們可以通過kill函式傳入相應的程序號來殺死相應的程序。

ulong kill_process_by_id(int pid){

int status = kill(pid, sigterm);

if(status == -1){

printf("kill %d failed \r\n", pid);

return err;

wait(&status);

if(wifsignaled(status)){

printf("child process receive signal %d\r\n", wtermsig(status));

return err;

return ok;

通過呼叫上述的2個函式,我們可以通過程序名來對程序進行殺死

ulong kill_process_by_name(char *task_name){

int id = -1;

int pid = &id;

ulong ulret;

if(task_name == null)

return err;

ulret = find_pid_by_name(pid, task_name);

if(ulret)

return err;

if(*pid == -1)

return err;

if(kill_process_by_id(*pid))

return err;

return ok;

根據程序名殺死程序 kill程序名

前兩天乙個老師給我出了乙個linux操作上的問題,現在知道程序名怎樣殺死這個程序。或許很多人都會和我一樣說用 pkill 程序名 或是 killall 程序名 的確這個兩個命令都能做到這些,而且我們平時一般知道程序名需要殺死程序的時候也都是用的這兩個命令。可是他叫我用kill 命令來完成這個一操作。...

VC(win32)通過程序名殺死程序

include tlhelp32.h void ckillprocessdlg onbnclickedok 將字串轉換為小寫 m processname.makelower 如果控制代碼有效 則一直獲取下乙個控制代碼迴圈下去 while process32next hsnapshot,pe 從快照程...

小結 python3 程序中 獲取程序號和殺死程序

遍歷搜尋及測試總結三種方法 1.import os,signal out os.popen ps aux grep xx.py read for line in out.splitlines print line if bcexservices.py in line pid int line.spl...