4

我一直在尝试遵循 Linux 上的流程创建流程。到目前为止,我已经添加了一些 debugprintk来了解 Linux 内核上的 pid 分配。但是,现在我希望在创建(或执行)时将 PID 映射到二进制文件。

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

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

我已经尝试过广泛调试该do_execve功能,但这似乎不包含与更改comm字段相关的代码..

有人可以指出该comm字段的分配地点和时间

4

2 回答 2

3

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

于 2013-02-22T22:12:05.513 回答
0

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

于 2013-02-22T22:31:28.813 回答