Linux入门知识:杀死僵尸进程(3)

上述的模块实现了僵尸进程的回收,虽然还不是很完美,然而起码证实了可行性,我们一些函数的地址还是通过procfs得到的。具体在代码润色方面,我有四个建议,这四个方式无论哪一个都是可行的,而且花不了太多时间,这里代码就从略了,如果写一下的话,充其量也只能锻炼一下c语言编程能力:

1.实现一个内核线程,专门实现模块init函数的逻辑,需要干掉的僵尸进程号通过procfs传入内核,然后在write例程中唤醒回收僵尸进程的内核线程;

2.实现一个用户态进程U,挂载一个信号A的处理函数,内部实现waitpid,通过procfs传入或者通过netlink传入内核的僵尸进程号代表的进程过继给用户态进程U,然后向U发送信号A;

3./dev/mem的机器码编程或者直接释放僵尸进程的task_t。

4.在/proc/<pid>/目录中加入kill-if-jiangshi文件,写入1如果该进程是僵尸,那么就调用上述模块的逻辑杀死它

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23575.html