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

7

No meu dispositivo Android, há o arquivo chamado /proc/net/unix , que é o conteúdo não está de acordo com qualquer distribuição de padrão linux (que mostra o domínio unix sockets.) Primeiras linhas:

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?

EDITAR : Ok, achei este :

Here 'Num' is the kernel table slot number, 'RefCount' is the number of users of the socket, 'Protocol' is currently always 0, 'Flags' represent the internal kernel flags holding the status of the socket. Currently, type is always '1' (Unix domain data-gram sockets are not yet supported in the kernel). 'St' is the internal state of the socket and Path is the bound path (if any) of the socket.

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

(2) Também no final do caminho, às vezes, há um número adicional sem o 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 em lsof |grep qmux que o número na última coluna de qmux_client_sockets items é o PID do processo que o utiliza.

    
por not2qubit 05.02.2015 / 17:18

1 resposta

5

O código que gera este arquivo está na função unix_seq_show() em net/unix/af_unix.c no fonte do kernel . Olhando para include/net/af_unix.h também é útil, para ver as estruturas de dados em uso. / p>

O caminho do soquete é sempre a última coluna na saída e o A origem do kernel do Android corresponde ao kernel de estoque 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 sockets de domínio UNIX praticamente do que quiser, contanto que o tamanho total do caminho seja menor que 108 bytes. Então você não pode fazer suposições sobre como esses caminhos serão. É possível que o código do espaço de usuário que está escolhendo esses nomes esteja usando um caractere de tabulação seguido de um número ou até mesmo preenchendo o nome com um determinado comprimento com espaços. Para testar minha teoria, você pode tentar ver os arquivos de soquete em /dev/socket/qmux_radio/ .

    
por 27.04.2016 / 05:18