[英]getting child processes with libproc
您可以從/proc/<child-pid>/stat
提供的孩子信息中提取父 pid。
據我所知, /proc
不會以相反的方式提供此信息。
要獲取樹,只需讀取所有 pid 的 parent-pid 屬性,然后自己建立反向索引。
在/proc/<pid>/task
我找到了我搜索的內容。 所有子進程都列在那里。 不幸的是,我必須編寫自己的代碼才能從結構中獲取信息,但這應該是可以管理的:)。
如果您對使用libproc
感到震驚(例如,在沒有 linux 的/proc
文件系統的系統上),您可以使用proc_listpids
。
XNU(macOS 的內核)還提供proc_listchildpids
, 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
,我自己。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.