何时何地是在Linux中命名的进程

时间:2013-02-22 22:00:31

标签: linux-kernel

我一直在尝试按照Linux上的流程创建流程进行操作。 到目前为止,我已经进行了一些调试printk以了解Linux内核上的pid分配。 但是,现在我希望在创建(或执行)时将PID映射到二进制文件。

我知道Linux创建进程的方式是通过分离init然后执行exec ..或直接从init执行exec ..

我试图跟踪新comm字段task_struct的填充时间和位置。 comm字段存储正在执行的二进制文件。 到目前为止,无论我在哪里尝试打印comm字段(在context_switch函数期间除外),所有进程始终将其名称显示为khelper

我已尝试广泛调试do_execve函数,但这似乎并不包含与更改comm字段相关的代码。

有人可以指出comm字段的分配位置和时间

2 个答案:

答案 0 :(得分:3)

更正:setup_new_exec中的fs/exec.c函数调用set_task_comm实际设置此字段。

答案 1 :(得分:0)

我发现setup_new_exec中的fs/exec.c填充了大多数用户进程的结构comm中的task_struct字段。 但是,对于在内核本身内启动的许多进程来说,这似乎不会发生。