|
msgctl выполняет управляющие операции над очередью сообщений.
Очередь задается аргументом msgid - идентификатором очереди. Выполняемая операция задается аргументом cmd. Аргумент buf служит представления информации о состоянии очереди:
struct msgid_ds {
struct ipc_perm msg_perm; /* Структура прав на выполнение операций */
struct msg *msg_first; /* Указатель на первое сообщение в очереди */
struct msg *msg_last; /* Указатель на последнее сообщение */
ushort msg_cbytes;/* Текущее число байт в очереди */
ushort msg_qnum; /* Число сообщений в очереди */
ushort msg_qbytes;/* Макс. допустимое число байт в очереди */
ushort msg_lspid; /* Идентификатор последнего отправителя */
ushort msg_lrpid; /* Идентификатор последнего получателя */
time_t msg_stime; /* Время последн. отправления */
time_t msg_rtime; /* Время последнего получения */
time_t msg_ctime; /* Время последнего изменения */
};
struct ipc_perm
{
key_t key;
ushort uid; /* euid и egid владельца */
ushort gid;
ushort cuid; /* euid и egid создателя */
ushort cgid;
ushort mode; /* младшие 9 бит доступа */
ushort seq; /* номер последовательности */
};
Операции, выполняемые системным вызовом msgctl, следующие:
IPC_STAT |
Копировать информацию из структуры очереди в структуру, на которую указывает buf. |
IPC_SET |
Присвоить полям структуры ipc_perm соответствующие значения, находящиеся в структуре, на которую указывает buf.
| IPC_RMID |
Удалить очередь. |
|