| Тип 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 |