是否有用于获取正在运行的进程的 uid/gid 的系统调用?

Cra*_*aig 5 c linux process

我自己的问题的长答案,在谷歌上搜索并没有找到任何有用的东西,是筛选“ps”的来源。但在我这样做之前,有没有人愿意提供懒人的解决方案?:-)

我发现了这个问题:Knowing the process status using procf/<pid>/status 但是,该解决方案似乎不适用于 3.2 内核。这个 pstatus_t 类型在较新的内核中可用吗?如果是这样,这是否意味着较新的内核提供了 /proc//status 的二进制接口?

Cra*_*aig 3

目前,我能想出的唯一可行的解​​决方案就是类似的东西。显然,还没有努力看看这是否真的像我期望的那样有效......:

int len, pid, n, fd = open("/proc/12345/status", O_RDONLY | O_NOATIME);
char buf[4096], whitespace[50];

if (0 < (len = read(fd, buf, 4096)))
{
    n = sscanf(buf, "Uid:%s%d ", whitespace, &pid);
}
Run Code Online (Sandbox Code Playgroud)

  • 只需“stat”“/proc/pid”目录并读取 st_uid 和 st_gid 值不是更容易吗? (3认同)