今天在Linux系统关机的时候发现系统的 KILL会首先杀死所有进程,由此想到自己编程实现,由于没有接触过内核,也不知道系统是怎么实现的,所以所述思路可能有些偏颇,还望高手指点.
思路最重要:
首先遍历/proc文件夹,取得所有进程的PID.然后一一KILL.
编程实现:
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9
10
11 int main(void)
12 {
13 DIR *dir;
14 struct dirent *ptr;
15 unsigned int mpid;
16 char mname[10];
17 unsigned int pname;
18
19 mpid = getpid();
20 sprintf(mname,"%ld",mpid);
21 dir = opendir("/proc");
22
23 while((ptr = readdir(dir))!= NULL)
24 {
25 if (!(isdigit(ptr->d_name[0]))) //取得 进程 id
26 continue;
27 if (strcmp(mname,ptr->d_name) == 0) // 防止自杀
28 continue;
29 pname = atoi(ptr->d_name);
30 kill(pname,9);
31 printf("Kill %d\n",pname);
32 }
33 return 0;
34 }
参考: <<通过/proc和gdb来实现感染进程的病毒程式分析>>,文:大鹰 (作者:七星居)