簡體   English   中英

使用 libproc 獲取子進程

[英]getting child processes with libproc

就像這篇文章中建議的那樣,我使用libproc來獲取所有正在運行的進程的列表。 htop miss 的樹視圖相比,我能夠獲取父進程的所有子進程。 有沒有辦法或功能來獲取它們?

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

據我所知, /proc不會以相反的方式提供此信息。


要獲取樹,只需讀取所有 pid 的 parent-pid 屬性,然后自己建立反向索引。

/proc/<pid>/task我找到了我搜索的內容。 所有子進程都列在那里。 不幸的是,我必須編寫自己的代碼才能從結構中獲取信息,但這應該是可以管理的:)。

如果您對使用libproc感到震驚(例如,在沒有 linux 的/proc文件系統的系統上),您可以使用proc_listpids

XNU(macOS 的內核)還提供proc_listchildpidsproc_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM