В выводе приводятся следующие данные: команда (данный сервис обеспечивается сервером
inetd
), идентификатор процесса, владелец процесса, дескриптор (15 и u означает, что он открыт на чтение и на запись), тип сокета, адрес протокола блока управления, размер смещения файла (не имеет значения для сокета), тип протокола и имя.
Еще один из
традиционных случаев применения данной программы имеет место, когда мы запускаем сервер, который связывает свой заранее известный порт и получает ошибку, указывающую, что адрес уже используется. Тогда мы запускаем программу
lsof
, чтобы выяснить, каким процессом используется данный порт.
Поскольку программа
lsof
сообщает об открытых файлах, она не может сообщать о точках доступа, не ассоциированных с открытым файлом, то есть точках доступа TCP в состоянии TIME_WAIT.
ПРИМЕЧАНИЕ
Программа находится по адресу ftp://vic.cc.purdue.edu/pub/tools/unix/lsof. Она написана Виком Абелем (Vic Abell).
Некоторые поставщики предлагают свои программы с похожими возможностями. Например, в BSD/OS предлагается программа fstat. Однако программа lsof работает под множеством версий Unix, а использование одного инструмента в неоднородном окружении вместо подбора различных средств для каждой среды является большим преимуществом.
Приложение Г
Различные исходные коды
Г.1. Заголовочный файл unp.h
Почти каждая программа в этой книге начинается с подключения заголовочного файла
unp.h
, показанного в листинге Г.1 [1] . Этот файл подключает все стандартные системные заголовочные файлы, необходимые для работы большинства программ, а также некоторые общие системные заголовочные файлы. В нем также определены такие константы, как
MAXLINE
, прототипы функций ANSI С для тех функций, которые мы определяем в тексте (например,
readline
), и все используемые нами функции-обёртки. Сами прототипы в приведенном ниже листинге мы не показываем.
1
Все исходные коды программ, опубликованные в этой книге, вы можете найти по адресу http://www.piter.com.
Листинг Г.1. Заголовочный файл unp.h
//lib/unp.h
1 /* Наш собственный заголовочный файл */
2 #ifndef __unp_h
3 #define __unp_h
4 #include "../config.h" /* параметры конфигурации для данной ОС */