Linux
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 中,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。