Как я могу сопоставить каждую запись /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