Qual è il significato dei contenuti di / proc / net / unix?


11

Sul mio dispositivo Android c'è il file chiamato il /proc/net/unixcui contenuto non è conforme a quello di qualsiasi distribuzione linux standard (che mostra i socket di dominio unix.) Prime righe:

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) Cosa significano queste diverse colonne?


EDIT : Ok ho trovato questo :

Qui "Num" è il numero di slot della tabella del kernel, "RefCount" è il numero di utenti del socket, "Protocollo" è attualmente sempre 0, "Flag" rappresentano i flag interni del kernel che contengono lo stato del socket. Attualmente, il tipo è sempre "1" (i socket grammo di dati del dominio Unix non sono ancora supportati nel kernel). 'St' è lo stato interno del socket e Path è il percorso associato (se presente) del socket.

Tuttavia, ciò non è aggiornato in quanto abbiamo un typee non chiariamo cosa significa "stato interno".

(2) Anche alla fine del percorso, a volte è presente un numero aggiuntivo senza il proprio nome di colonna. Cos'è quello?

Inoltre, dove nel codice sorgente del kernel potrei aspettarmi di trovare dove viene creato?

EDIT: 27-04-2016 (risolto)

Grazie alla risposta di seguito, ho confermato lsof |grep qmuxche il numero nell'ultima colonna per gli qmux_client_socketsarticoli è il PID del processo che lo utilizza.

Risposte:


6

Il codice che genera questo file è nella unix_seq_show()funzione nel net/unix/af_unix.csorgente del kernel . Anche guardare include/net/af_unix.hè utile per vedere le strutture di dati in uso.

Il percorso del socket è sempre l'ultima colonna nell'output e il sorgente del kernel Android corrisponde al kernel stock in questo senso. Quindi, a meno che non mi sbagli, quel numero che assomiglia a una colonna non è in realtà una colonna separata.

È possibile nominare i socket di dominio UNIX praticamente tutto ciò che si desidera, purché la lunghezza totale del percorso sia inferiore a 108 byte. Quindi non puoi fare ipotesi su come appariranno questi percorsi. È possibile che il codice dello spazio utente che sceglie quei nomi stia utilizzando un carattere di tabulazione seguito da un numero, o addirittura riempiendo il nome di una certa lunghezza con spazi. Per testare la mia teoria, potresti provare a guardare i file socket in /dev/socket/qmux_radio/.


1
Grazie, l'ho fatto! Non ci sono numeri di socket visualizzati /dev/socket/qmux_radio/solo nell'apri socket virtuale denominato qmux_client_socket. Ma il tuo aiuto mi ha fatto verificare psquali sono gli stessi.
not2qubit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.