我自己的问题的长答案,在谷歌上搜索并没有找到任何有用的东西,是筛选“ps”的来源。但在我这样做之前,有没有人愿意提供懒人的解决方案?:-)
我发现了这个问题:Knowing the process status using procf/<pid>/status 但是,该解决方案似乎不适用于 3.2 内核。这个 pstatus_t 类型在较新的内核中可用吗?如果是这样,这是否意味着较新的内核提供了 /proc//status 的二进制接口?
目前,我能想出的唯一可行的解决方案就是类似的东西。显然,还没有努力看看这是否真的像我期望的那样有效......:
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)