如何将每个 /proc/net/tcp 条目与每个打开的套接字匹配?

Posted

技术标签:

【中文标题】如何将每个 /proc/net/tcp 条目与每个打开的套接字匹配?【英文标题】:How can i match each /proc/net/tcp entry to each opened socket? 【发布时间】:2011-03-20 04:06:05 【问题描述】:

我正在尝试从/proc/net/tcp 解析套接字信息,虽然我可以识别一些字段,例如内存地址或发送队列使用,但我无法找到每个条目如何绑定到其套接字描述符。例如,使用此数据:

1: 5922140A:E459 D5C43B45:0050 01 00000000:00000000 00:00000000 00000000  1000        0 507218 1 f6ab1300 57 3 12 4 -1  

我想知道对应的套接字描述符是哪个。

【问题讨论】:

你的意思是拥有进程的文件描述符编号,还是你想知道拥有给定套接字的进程? @MattJoiner - 嗨,Matt,如何知道拥有给定套接字的进程? 【参考方案1】:

获取 inode 编号(在本例中为 507218)。该套接字的每个打开的文件描述符(同一个套接字可能有多个文件描述符)将显示为以下形式的链接:

/proc/<PID>/fd/<N> -> socket[507218]

(其中&lt;PID&gt; 是进程ID,&lt;N&gt; 是文件描述符)。

【讨论】:

【参考方案2】:

取决于架构如何格式化 /proc,但在 Linux 上:

http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html

【讨论】:

以上是关于如何将每个 /proc/net/tcp 条目与每个打开的套接字匹配?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 TCP 套接字的 inode?

列表中每个值的 SQL 查询循环

如何检索 Propel 1.6 中每个线程的最新问题?

如何使用 MySQL 展平左连接的结果?

如何在核心数据iOS中获取每个实体的最后一个条目

使用 Sequelize 计算关联条目