0

就像这篇文章中建议的那样,我libproc用来获取所有正在运行的进程的列表。与htop小姐的树形视图相比,我能够获取父进程的所有子进程。有没有办法或功能来获得它们?

4

3 回答 3

0

/proc/<pid>/task我找到了我一直在寻找的东西。所有子进程都列在那里。不幸的是,我必须编写自己的代码才能从结构中获取信息,但这应该是可以管理的:)。

于 2013-06-20T08:07:06.243 回答
0

您可以从提供的孩子信息中提取父 pid /proc/<child-pid>/stat

据我所知/proc,并没有反过来提供此信息。


要获取树,只需读取所有 pid 的 parent-pid 属性,然后自己建立反向索引。

于 2013-06-18T17:13:26.370 回答
0

如果您对使用libproc(例如在没有 linux/proc文件系统的系统上)感到震惊,您可以使用proc_listpids.

XNU(macOS 的内核)还提供proc_listchildpids,它只调用proc_listpids,但返回 PID 的数量而不是原始字节数。

int
proc_listchildpids(pid_t ppid, void * buffer, int buffersize)
{
    int numpids;
    numpids = proc_listpids(PROC_PPID_ONLY, (uint32_t)ppid, buffer, buffersize);
    if (numpids == -1) {
        return -1;
    } else {
        return numpids / sizeof(int);
    }
}

我觉得这更像是一个陷阱而不是一个方便,所以我更喜欢proc_listpids自己直接打电话。

于 2020-05-10T22:13:06.657 回答