1

我正在 Linux 3.0 中编写一个系统调用,当我等待某个事件发生时(使用等待队列),我想检查一个挂起的 SIGKILL,如果发生,我希望current任务尽快结束可能的。据我所知,一旦我从系统调用返回(嗯,真的:只要进程进入用户模式)返回,内核就会检查挂起的信号,并在看到 SIGKILL 时,内核将杀死current在它返回用户模式之前。

问题:关于 SIGKILL 的工作原理,我的上述假设是否正确?我的另一个选择是查看致命的 SIGKILL 未决,而不是从系统调用返回,我只是执行一个do_exit(). 我想尽可能地与其他 Linux 用例保持一致……而且似乎从系统调用中简单地返回就是其他代码所做的。我只是想确保上述关于 SIGKILL 如何杀死任务的假设是正确的。

4

1 回答 1

1

信号检查发生在系统调用退出后,是的。

参见例如ret_from_sys_callarch/x86/kernel/entry_64.S

于 2012-08-31T11:10:58.887 回答