【发布时间】:2009-09-23 14:24:38
【问题描述】:
我在一个内核模块中,我想拥有整个进程名称 从给定的pid。确切地说:我想要 /proc/PID/cmdline 中保留的行。
问题是task_struct->comm[] 只有 15 个字节长并且无法处理
如果程序手动或通过 setproctitle(3) 更改他的argv[]...
有什么想法吗? :)
【问题讨论】:
标签: linux linux-kernel kernel
我在一个内核模块中,我想拥有整个进程名称 从给定的pid。确切地说:我想要 /proc/PID/cmdline 中保留的行。
问题是task_struct->comm[] 只有 15 个字节长并且无法处理
如果程序手动或通过 setproctitle(3) 更改他的argv[]...
有什么想法吗? :)
【问题讨论】:
标签: linux linux-kernel kernel
你总是可以看看内核是如何做到的。你会看到函数:
proc_pid_cmdline(struct task_struct *task, char * buffer)
这很容易理解,但是一旦您拥有您感兴趣的进程的task_struct,您就可以使用access_process_vm() 从mm->arg_start 中获取您想要的位。
【讨论】:
'\0' 处停止,这是 argv[0] 的结尾 - 每个元素由 '\0' 分隔。跨度>
打开/proc/<pid>/cmdline 文件并仅读取内容有什么问题?
【讨论】: