12

我想从中获取完整的进程名称struct task_struct。该comm字段仅存储 16 个字符,而进程名称可以更长。有没有办法获得完整的进程名称?
这可以通过 get struct vm_area_structfrom来完成task_struct,并进一步获取 vm_area 映射到的文件,但这是不可靠的。

4

2 回答 2

14

你是说exe文件名吗?您可以通过以下方式获取当前进程的 exe:

char *pathname,*p;
mm = current->mm;
if (mm) {
    down_read(&mm->mmap_sem);
    if (mm->exe_file) {
                pathname = kmalloc(PATH_MAX, GFP_ATOMIC);
                if (pathname) {
                      p = d_path(&mm->exe_file->f_path, pathname, PATH_MAX);
                    /*Now you have the path name of exe in p*/
                }
            }
    up_read(&mm->mmap_sem);
}
于 2013-12-03T16:16:17.870 回答
-3

只需使用current->comm,您就可以看到名称。

例子:

printk(KERN_ALERT "THREAD NAME = %s\n", current->comm);
于 2019-09-17T11:13:46.877 回答