Читать «UNIX: взаимодействие процессов» онлайн - страница 96
Уильям Ричард Стивенс
Аргумент
Аргумент
■ если значение
■ если тип больше 0, возвращается первое сообщение, тип которого равен указанному;
■ если тип меньше нуля, возвращается первое сообщение с наименьшим типом, значение которого меньше либо равно модулю аргумента
Рассмотрим пример очереди сообщений, изображенный на рис. 6.1. В этой очереди имеются три сообщения:
■ первое сообщение имеет тип 100 и длину 1;
■ второе сообщение имеет тип 200 и длину 2;
■ третье сообщение имеет тип 300 и длину 3.
Таблица 6.1 показывает, какое сообщение будет возвращено при различных значениях аргумента
Таблица 6.1. Возвращаемое сообщение в зависимости от аргумента type
type | Тип возвращаемого сообщения |
---|---|
0 | 100 |
100 | 100 |
200 | 200 |
300 | 300 |
-100 | 100 |
-200 | 100 |
-300 | 100 |
Аргумент
■ появится сообщение с запрошенным типом;
■ очередь с идентификатором
■ вызвавший поток будет прерван перехватываемым сигналом (в этом случае возвращается ошибка EINTR).
В аргументе
В случае успешного завершения работы msgrcv возвращает количество байтов в принятом сообщении. Оно не включает байты, нужные для хранения типа сообщения (long), который также возвращается через указатель
6.5. Функция msgctl
Функция msgctl позволяет управлять очередями сообщений:
#include <sys/msg.h>
int msgctl(int
/* Возвращает 0 в случае успешного завершения, –1 в случае ошибки */
Команд (аргумент
■ IPC_RMID — удаление очереди с идентификатором