init 进程退出时的 Linux 内核操作

Bja*_*sen 8 init linux-kernel exit-status

假设我正在编写自己的在 Linux 内核上运行的 init 程序。

当我的 init 程序以返回值 0 退出时会发生什么?

此外,如果返回值非零,行为是否不同?

Jde*_*eBP 6

当我的 init 程序以返回值 0 退出时会发生什么?

运行来自 中的find_child_reaper函数的此代码kernel/exit.c

panic("试图杀死 init!exitcode=0x%08x\n",
       父亲->信号->group_exit_code ?: 父亲->exit_code);

因此,此消息会出现在您的控制台上:

内核恐慌 - 不同步:试图杀死 init!退出代码=0x00000000

  • @BjarkeFreund-Hansen 对于一个进程来说,没有“只是返回”这样的东西。当你从 `C` 程序中的 `main` 返回时,你会返回到 `C` 库中的存根函数,然后调用系统调用来结束进程,就像你调用了 `exit()` 一样。 (2认同)