Как я могу сопоставить каждую запись /proc/net/tcp с каждым открытым сокетом?

Я пытаюсь разобрать сокет /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 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам