我一直在尝试按照Linux上的流程创建流程进行操作。
到目前为止,我已经进行了一些调试printk
以了解Linux内核上的pid分配。
但是,现在我希望在创建(或执行)时将PID映射到二进制文件。
我知道Linux创建进程的方式是通过分离init然后执行exec ..或直接从init执行exec ..
我试图跟踪新comm
字段task_struct
的填充时间和位置。
comm
字段存储正在执行的二进制文件。
到目前为止,无论我在哪里尝试打印comm
字段(在context_switch
函数期间除外),所有进程始终将其名称显示为khelper
我已尝试广泛调试do_execve
函数,但这似乎并不包含与更改comm
字段相关的代码。
有人可以指出comm
字段的分配位置和时间
答案 0 :(得分:3)
更正:setup_new_exec
中的fs/exec.c
函数调用set_task_comm
实际设置此字段。
答案 1 :(得分:0)
我发现setup_new_exec
中的fs/exec.c
填充了大多数用户进程的结构comm
中的task_struct
字段。
但是,对于在内核本身内启动的许多进程来说,这似乎不会发生。