Jakie jest znaczenie zawartości / proc / net / unix?


11

Na moim urządzeniu z Androidem znajduje się plik o nazwie /proc/net/unixwho's content, który nie jest zgodny z żadną standardową dystrybucją linuksową (która pokazuje gniazda domeny unix). Kilka pierwszych wierszy:

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) Co oznaczają te różne kolumny?


EDYCJA : Ok znalazłem to :

Tutaj „Num” to numer gniazda tabeli jądra, „RefCount” to liczba użytkowników gniazda, „Protokół” wynosi obecnie zawsze 0, „Flagi” reprezentują wewnętrzne flagi jądra utrzymujące status gniazda. Obecnie typem jest zawsze „1” (gniazda jądra danych w domenie Unix nie są jeszcze obsługiwane w jądrze). „St” to wewnętrzny stan gniazda, a Ścieżka to związana ścieżka (jeśli istnieje) gniazda.

Nie jest to jednak aktualne, ponieważ mamy typei nie wyjaśniamy, co oznacza „stan wewnętrzny”.

(2) Również na końcu ścieżki czasami znajduje się dodatkowy numer bez własnej nazwy kolumny. Co to jest?

Ponadto, gdzie w kodzie źródłowym jądra mógłbym się dowiedzieć, gdzie jest on tworzony?

EDYCJA: 27.04.2016 (rozwiązany)

Dzięki odpowiedzi poniżej potwierdziłem lsof |grep qmux, że liczba w ostatniej kolumnie dla qmux_client_socketspozycji jest PID procesu, w którym jest używana.

Odpowiedzi:


6

Kod generujący ten plik znajduje się w unix_seq_show()funkcji w net/unix/af_unix.cźródle jądra . Patrząc na include/net/af_unix.hto również pomocne, aby zobaczyć struktury danych w użyciu.

Ścieżka gniazda jest zawsze ostatnią kolumną w danych wyjściowych, a źródło jądra Androida odpowiada pod tym względem jądrem podstawowym . O ile się nie mylę, ta liczba, która wygląda jak kolumna, nie jest tak naprawdę osobną kolumną.

Możesz nazwać gniazda domeny UNIX praktycznie dowolnie, o ile całkowita długość ścieżki jest mniejsza niż 108 bajtów. Nie można więc zakładać, jak będą wyglądać te ścieżki. Możliwe, że kod przestrzeni użytkownika, który wybiera te nazwy, używa znaku tabulacji, po którym następuje cyfra, lub nawet uzupełnia nazwę spacją do określonej długości. Aby przetestować moją teorię, możesz spróbować przejrzeć pliki gniazd /dev/socket/qmux_radio/.


1
Dzięki, że to zrobiło! Numery gniazd nie są wyświetlane /dev/socket/qmux_radio/tylko pod nazwą wirtualnego otwieracza gniazd o nazwie qmux_client_socket. Ale twoja pomoc kazała mi sprawdzić, psktóre są takie same.
not2qubit 27.04.16
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.