UNIX: взаимодействие процессов | страница 10



Условная переменная Posix(Без имени)Указатель типа pthread_cond_t
Блокировка чтения-записи Posix(Без имени)Указатель типа pthread_rwlock_t
Блокировка записей fcntlИмя файлаДескриптор
Разделяемая память PosixPosix-имя 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
Сокет TCPIP-адрес и порт TCPДескриптор.1g
Сокет UDPIP-адрес и порт 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), которая будет определена (обычно в заголовочном файле ), если эта функция поддерживается. Обратите внимание, что Unix 98 содержит в себе Posix.1 в качестве подмножества.


Таблица 1.3. Доступность различных форм IPC

Тип IPCPosix.1 1996Unix 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