10

表題の通り、上記のコマンドを Linux の sh シェルで実行しましたが、「ps -ef | grep dummy」を実行しても pid 7459 の子プロセスが見つかりません。これら 2 つのコマンドにこのような違いがある理由を誰かが説明できますか? LWP(スレッド)ではなく、アクティブなプロセスですよね?スレッドを表示するにはどうすればよいですか?

sh-3.2$ pstree -p  7459
dummy(7459)-+-{dummy}(7508)
            |-{dummy}(7528)
            |-{dummy}(7529)
            |-{dummy}(7530)
            |-{dummy}(7551)
            |-{dummy}(7552)
            |-{dummy}(7553)
            `-{dummy}(7554)
sh-3.2$ ps -ef | grep dummy
root      7459  7167  0 Aug28 ?        00:09:13 /usr/bin/dummy
erv      23720 17254  0 13:22 pts/4    00:00:00 grep dummy
sh-3.2$ 
4

1 に答える 1

10

@nos が既に述べたように、pstreeデフォルトでスレッドを表示しますが、表示ps -efしません。

psスレッドを表示できますが、要求していないだけです。これを試してください(お使いのバージョンによって異なる場合があります):

ps -eLf

これはすべてman ページにあります。

Linux スレッドは、別のプロセスと同じアドレス空間を共有する単なるプロセスです。きれいに折れなかったフォークのようなものです。詳細については、clonesyscall のドキュメントを参照してください。

于 2014-08-29T12:14:06.203 に答える