首页 > 解决方案 > Linux内核get_signal()中do_group_exit()的条件

问题描述

任何人都可以解释什么do_signal()get_signal()功能吗?这行代码get_signal()实际上意味着什么,即它何时运行:

        /*
         * Death signals, no core dump.
         */
        do_group_exit(ksig->info.si_signo);
        /* NOTREACHED */

例如在:https ://elixir.bootlin.com/linux/v4.7/source/kernel/signal.c#L2307

标签: linuxlinux-kernelsignals

解决方案


get_signal是独立于架构的,并返回当前任务队列中的下一个信号。如果该信号没有处理程序,它会执行默认操作,可以使用您链接到的代码行退出任务(例如在 SIGSEGV 或 SIGKILL 上),但也可以暂停任务核心转储任务然后退出。

有关默认操作的更多信息,请查看signal(7)的“标准信号”部分。

do_signal是特定于架构的,并在退出内核时由特定于架构的代码调用。它的工作是打电话get_signal。如果它返回一个信号,这意味着它应该由用户空间处理,它会推送信号处理程序堆栈帧。


推荐阅读