如何查看已打开套接字连接的进程的线程ID?

时间:2011-05-18 11:45:53

标签: linux multithreading sockets

我有一个进程,其中多个线程打开多个套接字连接。我想查看此信息并映射哪个线程已打开哪个套接字端口。 lsof -inetstat命令提供进程ID,但无法显示线程ID。是否有打印此信息的命令?

2 个答案:

答案 0 :(得分:12)

除非你在这个过程中做过(),否则。

一旦文件描述符打开,它就“同时”属于进程中的所有线程(就内核而言),你无法看到哪个线程打开它。

答案 1 :(得分:1)

正如MarkR建议的那样,您需要在启动时使用 strace

strace -fp <pid>

上面的命令将显示每个线程系统调用,如open(),read(),recv()等,以及使用的描述符:

[pid 428] close(36) 

隔离线程后,您可以附加到进程并使用

找出确切的线程
gdb attach <pid>

或者,如果您在流程中设置了线程名称,请使用

ps -eL

找出该帖子的友好名称。