teclimber 发表于 2011-06-09 19:03

linux下怎样查看多线程程序的主线程pid?

我有一个进程,他里面有几个线程。我知道这个进程的名字,现在我想通过进程的名字来查看这个进程的主线程的pid,改怎么办?linux下有什么命令吗?
我用pidof 名字可以查看,但是查看的是该进程的所有线程的pid,现在我只想要主线程的pid。

teclimber 发表于 2011-06-10 09:19

难道这样一个问题都没人回答上来?

crazyhadoop 发表于 2011-06-10 10:13

回复 1# teclimber


    一个进程不论多少线程,对外显示都是同一个pid吧?倒是有线程id鉴别不同的线程。

teclimber 发表于 2011-06-10 10:46

回复 3# crazyhadoop


    不对,pid是不同的,在linux中线程的本质是进程(轻量级进程),他们是有不同的pid的。我现在的程序就有6个线程,在ps的时候每个线程都有一个pid的。我就是想找出主线程的pid

crazyhadoop 发表于 2011-06-10 11:02

回复 4# teclimber


    咦~原来还真没注意过~你说的是 LWP和NLWP 这貌似是伪pid不过没看到有多个线程啊,请问下这个步骤啊~~

teclimber 发表于 2011-06-10 11:47

回复 5# crazyhadoop


    就是ps就会有了,我用pidof查看的时候会有几个id.我就是想找出主线程的id,然后杀死主线程,其余线程也就杀死了,否则我就要每个都杀死一次。

crazyhadoop 发表于 2011-06-10 11:52

回复 6# teclimber


    啊,我试了么有啊~主线程等别的线程执行完毕再结束不行吗?   或者你能把程序贴出来瞧瞧吗?

teclimber 发表于 2011-06-10 12:29

回复 7# crazyhadoop


    不行,我就是要杀死这个进程的。

cokeboL 发表于 2011-06-10 13:52

主线程应该就是进程本身,就是进程的pid,用getpid()就ok了,进程或者线程当中调用getpid()都返回该进程的pid。

看上面的回复不太明白你要做什么,是在控制台查看管理吗?如果是控制台查看的话,ps命令不显示线程啊。。。只显示出进程。。。
或者如果你说的线程的意思是fork()出来的多个子进程?如果是这样,杀死父进程并不代表把所有子进程全杀掉啊。。。晕,楼主解释清楚点哈。

cokeboL 发表于 2011-06-10 13:54

回复crazyhadoop


    不对,pid是不同的,在linux中线程的本质是进程(轻量级进程),他们是有不同 ...
teclimber 发表于 2011-06-10 10:46 http://bbs.chinaunix.net/images/common/back.gif


    不同线程的ID是不同的,但是线程ID的类型是pthread_t,跟pid_t是不一样的哈
页: [1] 2 3 4
查看完整版本: linux下怎样查看多线程程序的主线程pid?