Как мне сопоставить каждую запись / proc / net / tcp с каждым открытым сокетом? - PullRequest
15 голосов
/ 23 июля 2010

Я пытаюсь проанализировать информацию о сокете из /proc/net/tcp, и хотя я могу определить некоторые поля, такие как адреса памяти или использование очереди отправки, я не могу найти, как каждая запись связана со своим дескриптором сокета.например, с этими данными:

1: 5922140A:E459 D5C43B45:0050 01 00000000:00000000 00:00000000 00000000  1000        0 507218 1 f6ab1300 57 3 12 4 -1  

Я хочу знать, какой соответствующий дескриптор сокета.

Ответы [ 2 ]

17 голосов
/ 25 июля 2010

Возьмите номер инода (в данном случае 507218).Каждый дескриптор открытого файла для этого сокета (может быть несколько дескрипторов файлов для одного сокета) будет отображаться в виде ссылки вида:

/proc/<PID>/fd/<N> -> socket[507218]

(где <PID> - идентификатор процесса и <N>это дескриптор файла).

1 голос
/ 23 июля 2010

Зависит от архитектуры относительно того, как / proc может быть отформатирован, но в Linux:

http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html

...