Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix

Флаг IPC_NOWAIT заставляет ядро ОС UNIX не блокировать текущий процесс

лишь сообщать в ответных параметрах о возникновении ситуации, приведшей бы к блокированию процесса

semctl(id, number, cmd, arg);

id - это дескриптор группы семафоров

number - номер семафора в группе

cmd - код операции

arg - указатель на структуру, содержимое которой интерпретируется в зависимости от операции

Можно уничтожить индивидуальный семафор в указанной группе

Очереди сообщений

Четыре системных вызова:

msgget для образования новой очереди сообщений или получения дескриптора существующей очереди

msgsnd для посылки сообщения (его постановки в очередь сообщений)

msgrcv для приема сообщения (выборки сообщения из очереди)

msgctl для выполнения управляющих действий

msgqid = msgget(key, flag);

Сообщения хранятся в виде связного списка

Декскриптор очереди сообщений - индекс в массиве заголовков очередей сообщений

В заголовке очереди хранятся:

указатели на первое и последнее сообщение в данной очереди

число сообщений

общий размер в байтах сообщений, находящихся в очереди

идентификаторы процессов, которые последними послали или приняли сообщение через данную очередь

временные метки последних выполненных операций msgsnd, msgrsv и msgctl

Структуры данных, используемые для организации очередей сообщений

msgsnd(msgqid, msg, count, flag);

msg - это указатель на структуру, содержащую целочисленный тип сообщения и символьный массив

count - задает размер сообщения в байтах

flag определяет действия ядра при выходе за пределы допустимых размеров внутренней буферной памяти

К-во Просмотров: 371
Бесплатно скачать Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix