В справочной статье msgctl синтаксис данного системного вызова описан так:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl (msqid, cmd, buf)
int msqid, cmd;
struct msqid_ds *buf;
При успешном завершении результат равен нулю; в случае неудачи
возвращается -1.
В качестве аргумента msqid должен выступать идентификатор очереди сообщений, предварительно полученный при помощи системного вызова msgget.
Управляющее действие определяется значением аргумента cmd. Допустимых значений три:
IPC_STAT
Поместить информацию о состоянии очереди, содержащуюся в структуре данных, ассоциированной с идентификатором msqid, в пользовательскую структуру, на которую указывает аргумент buf.
IPC_SET
В структуре данных, ассоциированной с идентификатором msqid, переустановить значения действующих идентификаторов пользователя и группы, прав на операции, максимально допустимого числа байт в очереди.
IPC_RMID
Удалить из системы идентификатор msqid, ликвидировать чередь сообщений и ассоциированную с ней структуру данных.