Qual é o significado do conteúdo de / proc / net / unix?

11

No meu dispositivo Android, existe o arquivo chamado /proc/net/unixwho's content não está de acordo com o de qualquer distribuição linux padrão (que mostra os soquetes de domínio 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) O que essas colunas diferentes representam?


EDIT : Ok, eu encontrei isso :

Aqui 'Num' é o número do slot da tabela do kernel, 'RefCount' é o número de usuários do soquete, 'Protocol' atualmente é sempre 0, 'Flags' representam os sinalizadores internos do kernel que mantêm o status do soquete. Atualmente, o tipo é sempre '1' (soquetes de grama de dados do domínio Unix ainda não são suportados no kernel). 'St' é o estado interno do soquete e Path é o caminho vinculado (se houver) do soquete.

No entanto, isso não está atualizado, pois temos um typee não esclarecemos o que "estado interno" significa.

(2) Também no final do caminho, às vezes há um número adicional sem o próprio nome da coluna. O que é isso?

Além disso, onde no código fonte do kernel eu poderia esperar encontrar onde isso é criado?

EDIT: 2016-04-27 (Resolvido)

Graças à resposta abaixo, confirmei lsof |grep qmuxque o número na última coluna de qmux_client_socketsitens é o PID do processo que o utiliza.

not2qubit
fonte

Respostas:

6

O código que gera esse arquivo está na unix_seq_show()função na net/unix/af_unix.cfonte do kernel . Olhar include/net/af_unix.htambém é útil para ver as estruturas de dados em uso.

O caminho do soquete é sempre a última coluna na saída e a fonte do kernel do Android corresponde ao kernel padrão a esse respeito. Então, a menos que eu esteja enganado, esse número que parece uma coluna não é na verdade uma coluna separada.

Você pode nomear soquetes de domínio UNIX praticamente como desejar, desde que o comprimento total do caminho seja menor que 108 bytes. Portanto, você não pode fazer nenhuma suposição sobre a aparência desses caminhos. É possível que o código do espaço do usuário que esteja escolhendo esses nomes esteja usando um caractere de tabulação seguido de um número ou até preenchendo o nome com espaços específicos. Para testar minha teoria, você pode tentar examinar os arquivos de soquete /dev/socket/qmux_radio/.

Jander
fonte
1
Obrigado, conseguiu! Não há números de soquete exibidos /dev/socket/qmux_radio/apenas no abridor de soquete virtual chamado qmux_client_socket. Mas sua ajuda me fez verificar psquais são os mesmos.
precisa saber é o seguinte