web-dev-qa-db-ja.com

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でもそうですか。その理由は何ですか。

System VやBSDなどの他のUnixでもそうですか?

ありがとう。

2
Tim

スレッド情報を表示するには、タスクpsを実行する必要があります。それ以外の場合は、プロセスのみを一覧表示します。

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

各プロセスのメインスレッドを除くすべてのスレッドが表示されますつまり pidとtidが異なるプロセステーブルのエントリ。重要なオプションは-Lです。これがないと、psはpidとtidが同一のエントリのみを一覧表示します。

FreeBSDでは、同等のオプションは-Hです。他のBSDやSystemVはチェックしていません。

4
Stephen Kitt