我在一个内核模块,我想从一个给定的PID有整个进程名称。 确切地说:我想要保存在/ proc / PID / cmdline的行。
问题是, task_struct->comm[]
只有15个字节长,如果程序手动或通过setProctitle(3)更改其argv[]
,则不处理…
有任何想法吗? 🙂
你总是可以看看内核是如何做的。 你会看到这个功能:
proc_pid_cmdline(struct task_struct *task, char * buffer)
这是相当容易的,但是一旦你有了你感兴趣的进程的task_struct
,你可以使用access_process_vm()
从mm->arg_start
你想要的位。
打开/proc/<pid>/cmdline
文件并只读取内容有什么问题?