Яке значення вмісту / proc / net / unix?


11

На моєму пристрої 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' - кількість користувачів сокета, 'Протокол' в даний час завжди 0, 'Прапори' являють собою внутрішні прапори ядра, що містять статус сокета. В даний час вводиться завжди "1" (сокети даних-грамм даних Unix ще не підтримуються в ядрі). 'St' - це внутрішній стан сокета, а Шлях - зв'язаний шлях (якщо такий є) сокета.

Однак це не є сучасним, оскільки у нас є typeі не з'ясовується, що означає "внутрішній стан".

(2) Також наприкінці шляху іноді є додаткове число без власної назви стовпця. Що це?

Крім того, де у вихідному коді ядра я можу очікувати, де це створено?

EDIT: 2016-04-27 (вирішено)

Завдяки відповіді нижче, я підтвердив lsof |grep qmux, що число в останньому стовпчику для qmux_client_socketsелементів - це ПІД процесу його використання.

Відповіді:


6

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

Шлях сокета завжди є останнім стовпцем у виводі, і джерело ядра Android відповідає цьому ядро запасу . Тож якщо я не помиляюся, це число, схоже на стовпець, насправді не є окремим стовпцем.

Ви можете назвати розетки домену UNIX практично все, що завгодно, якщо загальна довжина шляху становить менше 108 байт. Таким чином, ви не можете робити жодних припущень щодо того, як виглядатимуть ці шляхи. Можливо, що в коді простору користувачів, який вибирає ці імена, використовується символ табуляції, який слідує за номером, або навіть додавання імені на певну довжину з пробілами. Щоб перевірити мою теорію, ви можете спробувати подивитися файли сокетів в /dev/socket/qmux_radio/.


1
Дякую, що це вдалося! Немає номерів розеток, відображених /dev/socket/qmux_radio/лише під назвою віртуального відкривача qmux_client_socket. Але ваша допомога змусила мене перевірити, psякі саме.
not2qubit
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.