Linux

tid 和 tgid 在 ps 的輸出中總是和 pid 相同嗎?

  • December 29, 2018

在 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 中,tid 和 tgid 似乎總是與 pid 相同,對於使用者程序和核心執行緒(我執行ps -o pid,tid,tgid,cmd)在 Linux 中是否如此,為什麼?

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

謝謝。

您需要執行任務ps以顯示執行緒資訊;否則它只列出程序:

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

將顯示除每個程序的主執行緒之外的所有執行緒,程序表中 pid 和 tid 不同的條目。重要的選項是-L:沒有它,ps只會列出 pid 和 tid 相同的條目。

在 FreeBSD 上,等效選項是-H. 我還沒有檢查過其他 BSD 或 System V。

引用自:https://unix.stackexchange.com/questions/491508