Was bedeutet der Inhalt von / proc / net / unix?

11

Auf meinem Android-Gerät befindet sich die Datei /proc/net/unixwho's content, die nicht mit der einer Standard- Linux-Distribution übereinstimmt (die die Unix-Domain-Sockets anzeigt). Erste Zeilen:

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) Wofür stehen diese verschiedenen Spalten?


EDIT : Ok , ich habe festgestellt , diese :

Hier ist 'Num' die Steckplatznummer der Kerneltabelle, 'RefCount' die Anzahl der Benutzer des Sockets, 'Protocol' ist derzeit immer 0, 'Flags' stehen für die internen Kernel-Flags, die den Status des Sockets enthalten. Derzeit ist der Typ immer '1' (Unix-Domain-Datengramm-Sockets werden im Kernel noch nicht unterstützt). 'St' ist der interne Status des Sockets und Path ist der gebundene Pfad (falls vorhanden) des Sockets.

Dies ist jedoch nicht auf dem neuesten Stand, da wir einen haben typeund nicht klären, was "interner Zustand" bedeutet.

(2) Auch am Ende des Pfades befindet sich manchmal eine zusätzliche Nummer ohne eigenen Spaltennamen. Was ist das?

Wo im Kernel-Quellcode könnte ich außerdem erwarten, zu finden, wo dieser erstellt wird?

BEARBEITEN: 27.04.2016 (Gelöst)

Dank der Antwort unten habe ich durch bestätigt lsof |grep qmux, dass die Nummer in der letzten Spalte für qmux_client_socketsElemente die PID des Prozesses ist, der sie verwendet.

not2qubit
quelle

Antworten:

6

Der Code, der diese Datei generiert, befindet sich in der unix_seq_show()Funktion net/unix/af_unix.cin der Kernelquelle . Ein Blick auf include/net/af_unix.hist auch hilfreich, um die verwendeten Datenstrukturen zu sehen.

Der Socket - Pfad ist immer die letzte Spalte in der Ausgabe und die Android - Kernel Quelle entspricht das Standard -Kernel in dieser Hinsicht. Wenn ich mich nicht irre, ist diese Zahl, die wie eine Spalte aussieht, keine separate Spalte.

Sie können UNIX-Domain-Sockets praktisch beliebig benennen, solange die Gesamtpfadlänge weniger als 108 Byte beträgt. Sie können also keine Annahmen darüber treffen, wie diese Pfade aussehen werden. Es ist möglich, dass der Userspace-Code, der diese Namen auswählt, ein Tabulatorzeichen gefolgt von einer Zahl verwendet oder den Namen sogar mit Leerzeichen auf eine bestimmte Länge auffüllt. Um meine Theorie zu testen, könnten Sie versuchen, die Socket-Dateien in zu betrachten /dev/socket/qmux_radio/.

Jander
quelle
1
Danke, das hat es geschafft! Es werden keine Socket-Nummern /dev/socket/qmux_radio/nur unter dem Namen des virtuellen Socket-Öffners angezeigt qmux_client_socket. Aber Ihre Hilfe hat mich dazu gebracht, zu überprüfen, pswelche gleich sind.
not2qubit