tid 和 tgid 是否始终与 ps 输出中的 pid 相同?

tid 和 tgid 是否始终与 ps 输出中的 pid 相同?

在 ps 的联机帮助页中

tid         TID          the unique number representing a dispatchable
                         entity (alias lwp, spid).  This value may also
                         appear as: a process ID (pid); a process group
                         ID (pgrp); a session ID for the session leader
                         (sid); a thread group ID for the thread group
                         leader (tgid); and a tty process group ID for
                         the process group leader (tpgid).

   tgid        TGID      a number representing the thread group to which
                         a task belongs (alias pid).  It is the process
                         ID of the thread group leader.

在 Ubuntu 中,对于用户进程和内核线程(我运行ps -o pid,tid,tgid,cmd),tid 和 tgid 似乎总是与 pid 相同,这在 Linux 中是这样吗?为什么?

在其他 Unix(例如 System V 或 BSD)中也是如此吗?

谢谢。

答案1

您需要任务ps来显示线程信息;否则它只列出进程:

ps -eL -o pid,tid,comm | awk '$1 != $2'

将显示除每个进程的主线程之外的所有线程,IE进程表中 pid 和 tid 不同的条目。重要的选项是-L:如果没有这个选项,ps将仅列出 pid 和 tid 相同的条目。

在 FreeBSD 上,等效选项是-H.我没有检查过其他 BSD 或 System V。

相关内容