【问题标题】:How to get parent thread name from current in linux kernel如何从当前Linux内核中获取父线程名称
【发布时间】:2020-02-04 08:21:14
【问题描述】:

我需要从内核中的“当前”task_struct 获取父线程名称。 task_struct 中的 comm 字段是线程的名称。

我看到task_structparentreal_parentgroup_leader。 访问task_struct 中的comm 字段中的任何一个都不会给出父线程的名称(即克隆/vfork 的当前线程)。相反,我为父级获得 systemd

我认为这是因为它与 init 命名空间一起使用。从“当前”线程获取父名称的正确方法是什么?

【问题讨论】:

    标签: c linux-kernel namespaces


    【解决方案1】:

    创建线程时(即使用CLONE_THREAD 标志),从内核的角度来看,这意味着同一线程组中的任务,父线程不是创建它,但与线程组中的所有其他线程相同的父级。从用户空间的角度来看,进程内的所有线程共享同一个父进程,即进程的父进程。

    .group_leader 是当前线程组领导的进程中的线程,它可能最接近您想要的(如果.group_leadercommsystemd,那么这往往表明您正在查看 systemd 本身的线程)。

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2023-04-10
      • 1970-01-01
      • 2020-04-02
      • 2023-03-09
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      相关资源
      最近更新 更多