Шрифт:
В случае успеха функция вернет 0, а в случае аварийного завершения — -1. Если вызов был успешен, копия данных сообщения принимается и помещается в очередь сообщений.
msgrcv
Функция
Первый параметр
Второй параметр
Третий параметр
Четвертый параметр
На практике все гораздо проще. Если вы просто хотите получать сообщения в порядке их отправления, задайте
Четвертый параметр
В случае успешного завершения функция msgrcv вернет количество байтов, помещенных в буфер приема, сообщение копируется в выделяемый пользователем буфер, на который указывает
msgctl
Последняя функция обработки очереди сообщений
Структура
Первый параметр
Второй параметр
Таблица 14.3
Значение | Описание |
---|---|
IPC_STAT | Задает данные в структуре msqid_ds , отображающие значения, связанные с очередью сообщений |
IPC_SET | Если у процесса есть на это право, это действие устанавливает значения, связанные с очередью сообщений, в соответствии с данными структуры msqid_ds |
IPC_RMID | Удаляет очередь сообщений |
В случае успешного завершения возвращает 0, в случае аварийного — -1. Если очередь сообщений удаляется, когда процесс ожидает в функции
Выполните упражнение 14.3.
Теперь, когда вы познакомились с объявлениями, относящимися к очередям сообщений, можно посмотреть, как они действуют на практике. Как и раньше, вы напишите две программы: msg1.c для получения и msg2.c для отправки сообщений. Вы разрешите обеим программам создавать очередь сообщений, но используете для удаления очереди программу-приемник после того, как она получит последнее сообщение.
1. Далее приведена программа-приемник msg1 .с: