Почему lsof показывает один и тот же файловый дескриптор для разных процессов?

lsof -i :80
COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
gnome-pan 28597 murat   18u  IPv4 2907888      0t0  TCP ....
gnome-pan 28597 murat   19u  IPv4 2907903      0t0  TCP ....
dropbox   28624 murat   18u  IPv4 2755213      0t0  TCP ...

Когда я перечисляю открытые файлы с ключом -i, я обнаружил, что некоторые процессы имеют одинаковые fd. Например, вывод выше, у pid 28597 и 28624 одинаковые fd. .Что является причиной этого ? Как они могут достичь той же области и почему? Также в чем смысл тебя (18u)? Некоторые fd заканчиваются на w.

2
задан 3 July 2012 в 12:11

2 ответа

Это означает, что эти процессы могут достигать одного и того же пространства памяти.

Почему они хотят достичь общего пространства памяти? Ответ прост - разговаривать друг с другом!

В вашем случае dropbox разговаривает с gnome-panel, который предоставляет значок состояния Dropbox.

В руководстве libc говорится следующее:

Основное использование дублирования файлового дескриптора - реализация перенаправления ввода или вывода: то есть, чтобы изменить файл или канал, которому соответствует определенный дескриптор файла.

Флаг u просто означает, что FD предназначен для чтения-записи; w означает только запись, r означает только чтение.

0
ответ дан 3 July 2012 в 12:11

Файловые дескрипторы определены в пространстве имен для каждого процесса. Они не являются уникальными для всей системы. Два показанных процесса не обращаются к одному и тому же файлу, о чем свидетельствует столбец DEVICE, который, в этом случае, скорее всего, показывает имя устройства вашего сокета TCP.

0
ответ дан 3 July 2012 в 12:11

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

Похожие вопросы: