就像这篇文章中建议的那样,我libproc
用来获取所有正在运行的进程的列表。与htop
小姐的树形视图相比,我能够获取父进程的所有子进程。有没有办法或功能来获得它们?
问问题
1069 次
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 回答