В чем смысл содержимого / proc / net / unix?

На моем устройстве Android есть файл с именем /proc/net/unix , содержимое которого не соответствует файлу любого стандартного дистрибутива 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) Что означают эти разные столбцы?


EDIT : Хорошо, я нашел это :

Здесь «Num» – это номер слота таблицы ядра, «RefCount» – это количество пользователей сокета, «Protocol» в настоящее время всегда 0, «Флаги» представляют собой внутренние флаги ядра, содержащие статус сокета. В настоящее время тип всегда равен «1» (в ядре еще не поддерживаются сокеты данных-графа Unix). «St» – это внутреннее состояние сокета, а Path – связанный путь (если есть) сокета.

Однако это не актуально, поскольку у нас есть type и не уточняется, что означает «внутреннее состояние».

(2) Также в конце пути иногда имеется дополнительное число без собственного имени столбца. Что это?

Кроме того, где в исходном коде ядра я могу найти, где он создан?

EDIT: 2016-04-27 (Решено)

Благодаря ответу ниже, я подтвердил с помощью lsof |grep qmux , что число в последнем столбце для элементов qmux_client_sockets – это PID процесса, использующего его.

Код, который генерирует этот файл, находится в функции unix_seq_show() в net/unix/af_unix.c в исходном net/unix/af_unix.c ядра . include/net/af_unix.h также полезно, чтобы увидеть используемые структуры данных.

Трассировка сокета всегда является последним столбцом на выходе, а исходный код ядра Android соответствует этому ядру . Поэтому, если я не ошибаюсь, это число, которое выглядит как столбец, на самом деле не является отдельным столбцом.

Вы можете назвать сокеты домена UNIX практически любым, что хотите, если общая длина пути меньше 108 байтов. Поэтому вы не можете делать какие-либо предположения относительно того, как будут выглядеть эти пути. Возможно, что код пользовательского пространства, который выбирает эти имена, использует символ табуляции, за которым следует число, или даже заполняет имя до определенной длины пробелами. Чтобы проверить мою теорию, вы можете попробовать посмотреть файлы сокетов в /dev/socket/qmux_radio/ .