【问题标题】:Traversing the process hierarchy of a process in C遍历C中进程的进程层次结构
【发布时间】:2016-11-29 11:01:24
【问题描述】:

我目前正在开发一个程序,用于跟踪 linux 中某个进程的层次结构的内存使用情况。虽然很容易找到父 ID,但很难找到该特定进程的子 ID。有没有什么方法可以在不借助 shell 脚本的情况下找到一个进程的所有子进程及其子进程等等?

【问题讨论】:

  • 我不知道有任何 C 方法可以做到这一点。您必须处理ps 命令的输出,或浏览/proc 文件夹以获取所有活动进程的列表及其ID 和父ID,并从那里重建树。并注意竞争条件,例如在该操作期间启动或结束进程......
  • 我已经在stackoverflow.com/questions/17743879/…回答了这个问题

标签: c linux


【解决方案1】:

进程层次结构是相反的——子进程跟踪他们的父进程。 您必须通过整个/proc 来检查每个进程的父进程。这就是所有这些工具所实现的:

或者,如果您可以从一开始就监控流程,例如就像strace 一样,那么您可以跟踪所有fork/clone 系统调用并记录返回的子pid。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    相关资源
    最近更新 更多