Quelle est la signification du contenu de / proc / net / unix?

11

Sur mon appareil Android, il y a le fichier appelé /proc/net/unixwho's content n'est conforme à celui d'aucune distribution linux standard (qui montre les sockets de domaine unix.) Premières lignes:

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) Que représentent ces différentes colonnes?


EDIT : Ok, j'ai trouvé ceci :

Ici, 'Num' est le numéro d'emplacement de la table du noyau, 'RefCount' est le nombre d'utilisateurs du socket, 'Protocol' est actuellement toujours 0, 'Flags' représente les drapeaux internes du noyau contenant le statut du socket. Actuellement, le type est toujours «1» (les sockets de gramme de données du domaine Unix ne sont pas encore prises en charge dans le noyau). 'St' est l'état interne du socket et Path est le chemin lié (le cas échéant) du socket.

Cependant, ce n'est pas à jour car nous en avons un typeet ne clarifie pas ce que signifie "état interne".

(2) Toujours à la fin du chemin, il y a parfois un numéro supplémentaire sans son propre nom de colonne. Qu'est-ce que c'est?

De plus, où dans le code source du noyau puis-je m'attendre à trouver où cela est créé?

EDIT: 2016-04-27 (Résolu)

Merci de répondre ci-dessous, j'ai confirmé à travers lsof |grep qmux, que le nombre dans la dernière colonne pour les qmux_client_socketsarticles, est le PID du processus qui l'utilise.

not2qubit
la source

Réponses:

6

Le code qui génère ce fichier se trouve dans la unix_seq_show()fonction net/unix/af_unix.cdans la source du noyau . Regarderinclude/net/af_unix.h est également utile de regarder pour voir les structures de données utilisées.

Le chemin du socket est toujours la dernière colonne de la sortie, et la source du noyau Android correspond au noyau stock à cet égard. Donc, sauf erreur, ce nombre qui ressemble à une colonne n'est pas en fait une colonne distincte.

Vous pouvez nommer les sockets de domaine UNIX pratiquement tout ce que vous voulez, tant que la longueur totale du chemin est inférieure à 108 octets. Vous ne pouvez donc pas faire d'hypothèses sur l'apparence de ces chemins. Il est possible que le code de l'espace utilisateur qui choisit ces noms utilise un caractère de tabulation suivi d'un nombre, ou même remplisse le nom d'une certaine longueur avec des espaces. Pour tester ma théorie, vous pouvez essayer de regarder les fichiers socket dans /dev/socket/qmux_radio/.

Jander
la source
1
Merci, ça y est! Il n'y a aucun numéro de socket affiché sous /dev/socket/qmux_radio/seulement l'ouvreur de socket virtuel nommé qmux_client_socket. Mais votre aide m'a fait vérifier psles mêmes.
not2qubit