linux - 如何找到 TCP 套接字的 inode ?

标签 linux sockets tcp proc

如何绑定(bind) /proc/net/tcp 的“inode”列中的值到 /proc/<pid>/fd/ 中的文件?

我的印象是 inode TCP 中的列具有套接字 inode 的十进制表示,但情况似乎并非如此。

例如,如果我运行 telnet localhost 80 ,我看到以下内容(telnet 是 pid 9021)。

/proc/net/tcp包含

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
23: 0100007F:CE2A 0100007F:0050 01 00000000:00000000 00:00000000 00000000  1000        0 361556 1 00000000 20 0 0 10 -1

这让我认为连接到 127.0.0.1:80 的套接字的 inode 是 361556。但是如果我运行 ls --inode -alh /proc/9021/fd , 我明白了

349886 lrwx------ 1 me me 64 Dec 26 10:51 3 -> socket:[361556]

inode为349886,与tcp表的inode列中的值:361556不同。但链接目标似乎有正确的名称。同样,stat /proc/9021/3显示:

File: ‘/proc/9021/fd/3’ -> ‘socket:[361556]’
Size: 64            Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 349886      Links: 1

tcp 表的 inode 列中的数字是多少?为什么它不与 ls 报告的 inode 对齐或 stat

(如果重要的话,我正在运行 Ubuntu 14.10)

最佳答案

lsstat 显示的 inode 是指向与套接字关联的 inode 的符号链接(symbolic link)。运行 ls -iLalh 显示正确的 inode。 stat -L 同上。

Herpa derp derp。我只是在撰写问题时才弄清楚这一点。 ;_;

关于linux - 如何找到 TCP 套接字的 inode ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659460/

相关文章:

c++ - 获取崩溃的堆栈跟踪,无需在调试器中运行应用程序

python - 线程UDP套接字

python-3.x - python socket(TCP)程序没有结束

linux - 无法打开 uid_map 以从具有 cap_setuid 功能集的应用程序写入

linux - 使用 Ubuntu 16.04.2 LTS 的 GIT 拉取

linux - 我想通过使用 cmake 的正确程序检测 clang 来使用 clang/clang++ 进行编译

javascript - 如何处理传递给套接字nodejs客户端的对象数组

Java控制IP TTL?

tcp - Go bufio.Scanner 在读取到 Redis 的 TCP 连接时停止

tcp - 启动 TCP 服务器时 wxPython GUI 丢失响应