2010-07-23 1 views
14

Я пытаюсь разобрать информацию о сокетах от /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 

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

+0

Вы имеете в виду номер дескриптора файла для процесса владения или хотите знать процесс, которому принадлежит данный сокет? –

+0

Да, файловый дескриптор. –

+0

@MattJoiner - Привет, Мэтт, Как узнать процесс, которому принадлежит данный сокет? – Suman

ответ

13

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

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

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

+0

Отлично! Большое спасибо! –