17.4. Сокеты домена Unix

17.4. Сокеты домена Unix

Сокеты домена Unix — это простейшее семейство протоколов, доступное через API- интерфейс сокетов. Они фактически не являются сетевыми протоколами, поскольку могут соединяться с сокетами только на одном и том же компьютере. Несмотря на то что это значительно ограничивает их полезность, они все же используются многими приложениями благодаря гибкому механизму IPC, который они поддерживают. Их адреса — это путевые имена, которые создаются в файловой системе, когда сокет привязывается к путевому имени. Файлы сокетов, представляющие адреса доменов Unix, могут быть запущены функцией stat(), но не могут быть открыты с помощью open(); вместо этого нужно использовать API сокетов.

Домен Unix предусматривает как дейтаграммные, так и потоковые интерфейсы. Дейтаграммный интерфейс используется редко, и здесь обсуждаться не будет. Мы рассмотрим потоковый интерфейс, работа которого подобна именованным каналам. При этом сокеты домена Unix, однако, не идентичны именованным каналам.

Если несколько процессов одновременно открывают именованный канал, то любой из них может прочесть сообщение, передаваемое через канал другим процессом. Каждый канал похож на доску объявлений. Если процесс располагает сообщение на доске, то любой другой процесс (с достаточными полномочиями) может прочитать это сообщение с доски.

Сокеты домена Unix работают на основе соединений; в результате каждого соединения с сокетом возникает новый канал связи. Сервер, который может обрабатывать множество соединений одновременно, сохраняет для каждого из них свой файловый дескриптор. Благодаря этому свойству сокеты домена Unix лучше подходят для выполнения многих задач IPC, чем именованные каналы. Это главная причина, по которой они применяются большинством стандартных служб Linux, включал X Window System и системный регистратор.