来自task_struct的完整进程名称

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

你的意思是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); }