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


11

在我的Android设备上,有一个名为/proc/net/unixwho's content的文件 与任何标准 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”表示内部内核标志,用于保存套接字的状态。当前,类型始终为“ 1”(内核尚不支持Unix域数据报套接字)。“ St”是套接字的内部状态,“ Path”是套接字的绑定路径(如果有)。

但是,这不是最新的,我们也type没有阐明“内部状态”的含义。

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

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

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

感谢下面的回答,我已经通过确认lsof |grep qmux,最后一列中的qmux_client_sockets项目编号是使用它的过程的PID

Answers:


6

生成此文件的代码在内核源代码中的unix_seq_show()函数中。查看也是有用的,以查看正在使用的数据结构。net/unix/af_unix.cinclude/net/af_unix.h

插座路径总是在输出的最后一列,而Android的内核源代码的匹配现有的内核在这方面。因此,除非我弄错了,否则看起来像一列的数字实际上并不是一个单独的列。

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


1
谢谢,做到了!/dev/socket/qmux_radio/仅在名为的虚拟套接字打开器下没有显示套接字号qmux_client_socket。但是您的帮助让我检查了ps哪些相同。
not2qubit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.