Операционная система UNIX. Руководство программиста


Использование операций


В статье msgop(2) Справочника программиста синтаксис упомянутых системных вызовов описан так:

#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>

int msgsnd (msqid, msgp, msgsz, msgflg) int msqid; struct msgbuf *msgp; int msgsz, msgflg;

int msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) int msqid; struct msgbuf *msgp; long msgtyp; int msgsz, msgflg;

2.4.1.1. Посылка сообщений

При успешном завершении системного вызова msgsnd() результат равен нулю; в случае неудачи возвращается -1.

В качестве аргумента msqid должен выступать идентификатор очереди сообщений, предварительно полученный при помощи системного вызова msgget(2).

Аргумент msgp является указателем на структуру в области памяти пользователя, содержащую тип посылаемого сообщения и его текст.

Аргумент msgsz специфицирует длину массива символов в структуре данных, указываемой аргументом msgp, то есть длину сообщения. Максимально допустимый размер данного массива определяется системным параметром MSGMAX.

Отметим, что значение поля msg_qbytes ассоциированной структуры данных может быть уменьшено с предполагаемой по умолчанию величины MSGMNB при помощи управляющего действия IPC_SET системного вызова msgct(2), однако впоследствии увеличить его может толь- ко суперпользователь.

Аргумент msgflg позволяет специфицировать выполнение над сообщением "операции с блокировкой"; для этого флаг IPC_NOWAIT должен быть сброшен (msgflg & IPC_NOWAIT = 0). Блокировка имеет место, если либо текущее число байт в очереди уже равно максимально допустимому значению для указанной очереди (то есть значению поля msg_qbytes или MSGMNB), либо общее число сообщений во всех очередях равно максимально допустимому системой (системный параметр MSGTQL). Если в такой ситуации флаг IPC_NOWAIT

установлен, системный вызов msgsnd() завершается неудачей и возвращает -1.

2.4.1.2. Прием сообщений

При успешном завершении системного вызова msgrcv() результат равен числу принятых байт; в случае неудачи возвращается -1.




Начало  Назад  Вперед



Книжный магазин