3

我在一个内核模块中,我想从给定的 pid 中获得整个进程名称。确切地说:我想要 /proc/PID/cmdline 中的行。

问题是它只有 15 个字节长,如果程序手动或通过 setproctitle(3)task_struct->comm[]更改它,则无法处理...argv[]

有任何想法吗?:)

4

2 回答 2

4

你总是可以看看内核是如何做到的。你会看到这个函数:

proc_pid_cmdline(struct task_struct *task, char * buffer)

这很容易理解,但是一旦你掌握了task_struct你感兴趣的过程,你就可以access_process_vm()mm->arg_start.

于 2009-09-23T15:14:21.630 回答
2

打开/proc/<pid>/cmdline文件并仅读取内容有什么问题?

于 2009-09-23T14:28:47.377 回答