我需要以某种方式检索真实有效的UID和GID以及进程的补充组,只知道它的PID。
文件fs/proc/array.c
为此目的使用struct cred
(p为struct task_struct *p
):
cred = get_task_cred(p);
但是,我找不到使用另一个进程的PID在用户模式下检索这样一个结构的方法。
有没有办法从用户模式获取信息(unix内核3.13)?
答案 0 :(得分:0)
有关进程的信息存储在proc filesystem中,其中每个进程都有其各自的目录。您要查找的字段为Uid:
和Gid:
,其中还包含有效的UID / GID。
stat Process status
statm Process memory status information
status Process status in human readable form
但是,从同一个kernel documentation您也可以找到:
Uid Real, effective, saved set, and file system UIDs
Gid Real, effective, saved set, and file system GIDs
由于从proc文件系统提供的文件status
只是一个文本文件,您可以继续以任何您喜欢的方式从那里读取所需信息,例如fscanf()
。