Как я могу сопоставить каждую запись /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
Я хочу знать, что является дескриптором сокататора.
Ответы
Ответ 1
Возьмите номер inode (в данном случае 507218). Каждый дескриптор открытого файла для этого сокета (может содержать несколько файловых дескрипторов для одного и того же сокета) будет отображаться как ссылка формы:
/proc/<PID>/fd/<N> -> socket[507218]
(где <PID>
- идентификатор процесса, а <N>
- файловый дескриптор).
Ответ 2
Зависит от архитектуры относительно того, как /proc может быть отформатирован, но в Linux:
http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html