Тип IPC | Пространство имен для создания или открытия | Идентификатор после открытия | Posix.1 1996 | Unix 98 |
---|---|---|---|---|
Канал | (Без имени) | Дескриптор | • | • |
FIFO | Имя файла (pathname) | Дескриптор | • | • |
Взаимное исключение Posix | (Без имени) | Указатель типа pthread_mutex_t | • | • |
Условная переменная Posix | (Без имени) | Указатель типа pthread_cond_t | • | • |
Блокировка чтения-записи Posix | (Без имени) | Указатель типа pthread_rwlock_t | • | |
Блокировка записей fcntl | Имя файла | Дескриптор | • | • |
Разделяемая память Posix | Posix-имя IPC | Дескриптор | • | • |
Очередь сообщений System V | Ключ key_t | Идентификатор IPC System V | • | |
Семафор System V | Ключ key_t | Идентификатор IPC System V | • | |
Разделяемая память System V | Ключ key_t | Идентификатор IPC System V | • | |
Двери (doors) | Имя файла | Дескриптор | ||
Удаленный вызов процедур (RPC) Sun | Программа/версия | Дескриптор (handle) RPC | ||
Сокет TCP | IP-адрес и порт TCP | Дескриптор | .1g | • |
Сокет UDP | IP-адрес и порт TCP | Дескриптор | .1g | • |
Доменный сокет Unix (domain socket) | Полное имя файла | Дескриптор | .1g | • |
Здесь также указано, какие формы IPC содержатся в стандарте Posix.1 1996 года и какие были включены в стандарт Unix 98. Об обоих этих стандартах более подробно рассказано в разделе 1.7. Для сравнения мы включили в эту таблицу три типа сокетов, которые подробно описаны в [24]. Обратите внимание, что интерфейс сокетов (Application Program Interface — API) стандартизируется рабочей группой Posix.1g и должен в будущем стать частью стандарта Posix.1.
Хотя стандарт Posix. 1 и дает возможность использования семафоров, их поддержка не является обязательной для производителей. В табл. 1.3 сведены функции, описанные в стандартах Posix.1 и Unix 98. Каждая функция может быть обязательной (mandatory), неопределенной (not defined) или необязательной (дополнительной — optional). Для необязательных функций мы указываем имя константы (например, _POSIX_THREADS), которая будет определена (обычно в заголовочном файле
Таблица 1.3. Доступность различных форм IPC
Тип IPC | Posix.1 1996 | Unix 98 |
---|---|---|
Программный канал | Обязателен | Обязателен |
FIFO | Обязателен | Обязателен |
Взаимное исключение Posix | _POSIX_THREADS | Обязателен |
Условная переменная Posix | _POSIX_THREADS | Обязателен |
Взаимные исключения и условные переменные между процессами | _POSIX_THREADS_PROCESS_SHARED | Обязателен |
Блокировка чтения-записи Posix | (He определен) | Обязателен |
Блокировка записей fcntl | Обязателен | Обязателен |
Очередь сообщений Posix | _POSIX_MESSAGE_PASSING | _XOPEN_REALTIME |
Семафоры Posix | _POSIX_SEMAPHORES_ | _XOPEN_REALTIME |
Память с общим доступом Posix | _POSIX_SHARED_MEMORY_OBJECTS | _XOPEN_REALTIME |
Очередь сообщений System V | (He определен) | Обязателен |
Семафор System V | (He определен) | Обязателен |
Память с общим доступом System V | (He определен) | Обязателен |
Двери (doors) | (He определен) | (Не определен) |
Удаленный вызов процедур Sun | (He определен) | (Не определен) |
Отображение памяти mmap | _POSIX_MAPPED_FILES или POSIX_SHARED_MEMORY_OBJECTS | Обязателен |
Сигналы реального времени (realtime signals) | _POSIX_REALTIME_SIGNALS | _XOPEN_REALTIME |