Почему 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 ответа
Это означает, что эти процессы могут достигать того же пространства памяти.
Зачем им хотеть достичь общего пространства памяти? Ответ прост - разговаривать друг с другом!
В твоем случае, dropbox
разговаривает с gnome-panel
, который предоставляет значок состояния Dropbox.
В руководстве поlibc сказано следующее:
Основное использование дублирования файлового дескриптора заключается в реализации перенаправления ввода или вывода: то есть для изменения файла или канала, которому соответствует определенный файловый дескриптор.
u
флаг просто означает, что FD является чтение-запись; w
означает только запись, r
означает только для чтения.
Файловые дескрипторы определены в пространстве имен для каждого процесса. Они не являются уникальными для всей системы. Два показанных процесса не обращаются к одному и тому же файлу, о чем свидетельствует DEVICE
столбец, который в данном случае, скорее всего, показывает имя устройства вашего сокета TCP.