/proc/net/unix 的内容是什么意思?

/proc/net/unix 的内容是什么意思?

在我的 Android 设备上有一个名为/proc/net/unixwho's 的文件内容 不符合任何标准linux 发行版(显示 unix 域套接字。)前几行:

Num       RefCount Protocol Flags    Type St Inode Path
00000000: 00000002 00000000 00000000 0002 01 5287581 /data/misc/wifi/sockets/wpa_ctrl_789-3189
00000000: 00000003 00000000 00000000 0001 03    6402 /dev/socket/qmux_radio/qmux_client_socket    297
00000000: 00000002 00000000 00010000 0001 01    7180 /dev/.secure_storage/ssd_socket
00000000: 00000002 00000000 00010000 0001 01    6424 /dev/socket/cnd
00000000: 00000002 00000000 00010000 0001 01    6400 @QMulticlient
...

(1) 这些不同的列代表什么?


编辑: 好的我找到了:

这里'Num'是内核表槽号,'RefCount'是套接字的用户数量,'Protocol'当前始终为0,'Flags'表示保存套接字状态的内部内核标志。目前,type 始终为“1”(内核尚不支持 Unix 域数据报套接字)。 'St' 是套接字的内部状态,Path 是套接字的绑定路径(如果有)。

然而,这不是最新的,因为我们有一个type并且没有澄清“内部状态”的含义。

(2) 同样在路径的末尾,有时还会有一个没有自己的列名的附加数字。那是什么?

此外,我可以在内核源代码中的哪里找到它的创建位置?

编辑:2016-04-27(解决)

感谢下面的回答,我已经通过 确认lsof |grep qmux,项目最后一列中的数字qmux_client_socketsPID使用它的过程。

答案1

生成该文件的代码位于unix_seq_show()函数中net/unix/af_unix.c在内核源代码中。看着include/net/af_unix.h查看正在使用的数据结构也很有帮助。

套接字路径始终是输出中的最后一列,并且Android内核源码匹配库存内核在这方面。因此,除非我弄错了,那个看起来像一列的数字实际上并不是一个单独的列。

您几乎可以为 UNIX 域套接字命名任何您想要的名称,只要总路径长度小于 108 字节即可。因此,您无法对这些路径的外观做出任何假设。选择这些名称的用户空间代码可能使用制表符后跟数字,甚至用空格将名称填充到一定长度。为了测试我的理论,您可以尝试查看/dev/socket/qmux_radio/.

相关内容