gpt4 book ai didi

linux - 在 Linux 内核中如何为守护进程分配 pid(进程 ID)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:45 26 4
gpt4 key购买 nike

我研究了Linux内核代码(2.6.11)关于进程/线程的创建,按照do_fork()->alloc_pidmap()

一旦前一个 pid 达到最大 pid,alloc_pidmap 似乎总是返回 pid > 300,而实际上守护进程的 pid 总是 < 300(这是正确的吗?)。

守护进程是否使用 alloc_pidmap() 以外的函数获取其 pid?如果是这样,是否意味着守护进程不是使用 do_fork 创建的?

最佳答案

AFAIK pid 由内核分配;您看到的 300 的限制(即 #define RESERVED_PIDS 300 private inside kernel/pid.c)可能是因为在大多数系统上,几个进程在 Bootstrap (例如,可能来自 initrd)。

您可以通过使用 init=/bin/sh

从 GRUB 直接引导到内核来进行测试

有些进程是内核进程(没有用户态代码,例如 kworkerkauditd),它们不是由 init 或后代的 fork 启动的。它们可能是从 kthread_create inside 内核开始的(没有任何系统调用)。

您应该解释为什么要问这个。您的问题是关于确定进程是否是守护进程吗?

关于linux - 在 Linux 内核中如何为守护进程分配 pid(进程 ID)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com