linux下怎样查看多线程程序的主线程pid?
我有一个进程,他里面有几个线程。我知道这个进程的名字,现在我想通过进程的名字来查看这个进程的主线程的pid,改怎么办?linux下有什么命令吗?
我用pidof 名字可以查看,但是查看的是该进程的所有线程的pid,现在我只想要主线程的pid。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
难道这样一个问题都没人回答上来?
回复 1# teclimber
一个进程不论多少线程,对外显示都是同一个pid吧? 倒是有线程id鉴别不同的线程。
回复 3# crazyhadoop
不对,pid是不同的,在linux中线程的本质是进程(轻量级进程),他们是有不同的pid的。我现在的程序就有6个线程,在ps的时候每个线程都有一个pid的。我就是想找出主线程的pid
回复 4# teclimber
咦~原来还真没注意过~你说的是 LWP和NLWP 这貌似是伪pid 不过没看到有多个线程啊,请问下这个步骤啊~~
回复 5# crazyhadoop
就是ps就会有了,我用pidof查看的时候会有几个id.我就是想找出主线程的id,然后杀死主线程,其余线程也就杀死了,否则我就要每个都杀死一次。
回复 6# teclimber
啊,我试了么有啊~主线程等别的线程执行完毕再结束不行吗? 或者你能把程序贴出来瞧瞧吗?
回复 7# crazyhadoop
不行,我就是要杀死这个进程的。
主线程应该就是进程本身,就是进程的pid,用getpid()就ok了,进程或者线程当中调用getpid()都返回该进程的pid。
看上面的回复不太明白你要做什么,是在控制台查看管理吗?如果是控制台查看的话,ps命令不显示线程啊。。。只显示出进程。。。
或者如果你说的线程的意思是fork()出来的多个子进程?如果是这样,杀死父进程并不代表把所有子进程全杀掉啊。。。晕,楼主解释清楚点哈。
不同线程的ID是不同的,但是线程ID的类型是pthread_t,跟pid_t是不一样的哈