где msg - это указатель на структуру длиной size, содержащую определяемый пользователем целочисленный тип сообщения и символьный массив-сообщение.
Структура msg имеет вид:
struct msg {
long mtype; /* тип сообщения */
char mtext[SOMEVALUE]; /* текст сообщения (SOMEVALUE - любое */};
Параметр flag определяет действия ядра при выходе за пределы допустимых размеров внутренней буферной памяти (флаг IPC_NOWAIT со значением, рассмотренным выше).
Условиями успешной постановки сообщения в очередь являются:
Если же оказывается, что новое сообщение невозможно буферизовать в ядре по причине превышения верхнего предела суммарной длины сообщений, находящихся в данной очереди сообщений (флаг IPC_NOWAIT при этом отсутствует), то обратившийся процесс откладывается (усыпляется) до тех пор, пока очередь сообщений не разгрузится процессами, ожидающими получения сообщений.
Для приема сообщения используется системный вызов msgrcv():