Server for Information Technologies Сервер поддерживается
Центром Информационных Технологий
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Сервер содержит море(!) аналитической информации CIT Forum CD-ROM

MSGCTL(2) MSGCTL(2)

НАЗВАНИЕ
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;

ОПИСАНИЕ
Системный вызов msgctl позволяет выполнять операции управления очередью сообщений. Операция определяется значением аргумента cmd, которое должно быть одним из следующих:

IPC_STAT
Поместить текущее значение каждого поля структуры данных, ассоциированной с идентификатором очереди сообщений msqid, в структуру, на которую указывает buf. Содержимое структуры описано в intro(2). {Требуется право на чтение.}
IPC_SET
Присвоить следующим полям структуры данных, ассоциированной с идентификатором msqid, соответствующие значения, находящиеся в структуре, на которую указывает buf:
 msg_perm.uid
 msg_perm.gid
 msg_perm.mode /* Только младшие 9 бит */
 msg_qbytes
Это действие может выполняться только процессом, действующий идентификатор пользователя которого равен либо идентификатору суперпользователя, либо значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid. Только суперпользователь может увеличивать значение поля msg_qbytes.
IPC_RMID
Удалить из системы идентификатор очереди сообщений, определяемый значением msqid, ликвидировать очередь сообщений и ассоциированную с ней структуру данных. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid.

Системный вызов msgctl завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EINVAL]
Значение аргумента msgid не является корректным идентификатором очереди сообщений.
[EINVAL]
Некорректное значение аргумента cmd, определяющее выполняемое действие.
[EACCES]
Значение аргумента cmd равно IPC_STAT и нет прав на чтение у вызывающего процесса
[см. intro(2)].
[EPERM]
Значение аргумента cmd равно IPC_RMID или IPC_SET и действующий идентификатор пользователя вызывающего процесса не равен ни идентификатору суперпользователя, ни значению поля msg_perm.cuid или msg_perm.uid в структуре данных, ассоциированной с msqid.
[EPERM]
Значение аргумента cmd равно IPC_SET и была предпринята попытка увеличить значение поля msg_qbytes, а действующий идентификатор пользователя вызывающего процесса не равен идентификатору суперпользователя.
[EFAULT]
Аргумент buf указывает за пределы отведенного процессу адресного пространства.

СМ. ТАКЖЕ
intro(2), msgget(2), msgop(2).

ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.

Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT
Обновлено: 13.03.2015