filesystems – ¿Cuál es el significado del contenido de / proc / net / unix?

Pregunta:

En mi dispositivo Android hay un archivo llamado /proc/net/unix cuyo contenido no se ajusta al de ninguna distribución estándar de Linux (que muestra los sockets de dominio de Unix). Primeras líneas:

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) ¿Qué representan estas diferentes columnas?


EDITAR : Ok, encontré esto :

Aquí 'Num' es el número de ranura de la tabla del kernel, 'RefCount' es el número de usuarios del socket, 'Protocol' actualmente es siempre 0, 'Flags' representan las banderas internas del kernel que contienen el estado del socket. Actualmente, el tipo es siempre '1' (los sockets de data-gram de dominio Unix aún no son compatibles con el kernel). 'St' es el estado interno del socket y Path es la ruta enlazada (si existe) del socket.

Sin embargo, eso no está actualizado ya que tenemos un type y no aclaramos qué significa "estado interno".

(2) También al final de la ruta, a veces hay un número adicional sin su propio nombre de columna. ¿Que es eso?

Además, ¿en qué parte del código fuente del kernel podría esperar encontrar dónde se crea?

EDITAR: 2016-04-27 (resuelto)

Gracias a la respuesta a continuación, he confirmado a través de lsof |grep qmux , que el número en la última columna para los elementos qmux_client_sockets , es el PID del proceso que lo usa.

Respuesta:

El código que genera este archivo está en la función unix_seq_show() en net/unix/af_unix.c en el código fuente del kernel . También es útil mirar include/net/af_unix.h para ver las estructuras de datos en uso.

La ruta del socket es siempre la última columna de la salida, y la fuente del kernel de Android coincide con el kernel estándar a este respecto. Entonces, a menos que me equivoque, ese número que parece una columna no es en realidad una columna separada.

Puede nombrar los sockets de dominio UNIX prácticamente como desee, siempre que la longitud total de la ruta sea inferior a 108 bytes. Por lo tanto, no puede hacer suposiciones sobre cómo se verán estos caminos. Es posible que el código del espacio de usuario que está eligiendo esos nombres esté usando un carácter de tabulación seguido de un número, o incluso rellenando el nombre hasta una cierta longitud con espacios. Para probar mi teoría, puede intentar mirar los archivos de socket en /dev/socket/qmux_radio/ .

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım