kill进程之后内核到底发生了哪些事情

kill进程之后内核到底发生了哪些事情

Posted by lwk on May 19, 2020

我们起一个daemon进程,然后kill-9杀掉,为了看下系统调用,我们strace一下kill对应的系统调用。 image strace部分结果如图所示:

image Kill对应源码是coreutils中,本文我们使用coreutils-8.2,编译完之后,在src目录下生成kill二进制文件。通过gdb调试

image image

Kill系统调用对应文件是kernel/signal.c

image Kill_something_info函数在kernel/signal.c文件中,内容如下:

image kill_pid_info函数在内核的kernel/signal.c文件中定义:

image group_send_sig_info函数内容如下:

image

check_kill_permission函数内容: image image

do_send_sig_info函数执行具体的发送信号操作: image image __send_signal函数逻辑:

image image image image image

总结一下:kill系统调用后,进入内核态的逻辑如下图所示。

image