【问题标题】:How to get all descendent child process id of pid in c in linux [duplicate]如何在linux中的c中获取pid的所有后代子进程ID [重复]
【发布时间】:2013-12-30 07:15:01
【问题描述】:

如果我fork 和子进程然后exec 并创建更多子进程(它们本身可以创建更多进程),我如何从第一个进程获得所有后代进程的pids 列表?

有没有更好的方法然后循环 /proc/ 并检查每个进程的 PPid(进程 ID 的父级)?

【问题讨论】:

  • 该问题的答案使用 pgrep -P 仅给出 pid 的子进程 pid,而不是该子进程的子进程可能创建的所有进程,而这些进程本身可能创建了更多进程。
  • 当然可以,但此时您只需应用递归。
  • @OliCharlesworth 不确定它是否重复,因为您提到的问题是特定于 shell 脚本的,它与这个问题有不同的解决方案,它是 C 相关的,并且可能有,例如(?),作为解决方案的内核调用?
  • C 没有提供通过系统调用实现此目的的标准方法。
  • 我已经在stackoverflow.com/questions/17743879/…回答了这个问题

标签: c linux process fork pid


【解决方案1】:

遍历 /proc 是执行此操作的“标准”方式。这就是ps 和朋友(pstree 等)的实现方式。

【讨论】:

    【解决方案2】:

    如果您正在寻找查看进程树的命令,请查看以下命令。

    ps -ejH
    ps axjf
    pstree $PID
    

    查看pspstree 命令的手册页。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2017-03-09
      • 1970-01-01
      • 2021-06-19
      • 2014-06-25
      • 1970-01-01
      相关资源
      最近更新 更多