.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Giorgio Ciucci .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Added correction due to Nick Duffek , aeb, 960426 .\" Modified Wed Nov 6 04:00:31 1996 by Eric S. Raymond .\" Modified, 8 Jan 2003, Michael Kerrisk, .\" Removed EIDRM from errors - that can't happen... .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on capability requirements .\" Modified, 11 Nov 2004, Michael Kerrisk .\" Language and formatting clean-ups .\" Added notes on /proc files .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH msgget 2 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ msgget \- возвращает идентификатор очереди сообщений System V .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint msgget(key_t \fP\fIkey\fP\fB, int \fP\fImsgflg\fP\fB);\fP .fi .SH ОПИСАНИЕ Системный вызов \fBmsgget\fP() возвращает идентификатор очереди сообщений System\ V, связанный со значением аргумента \fIkey\fP. Его можно использовать для получения идентификатора уже созданной очереди сообщений (если \fImsgflg\fP равно нулю и значение \fIkey\fP не равно \fBIPC_PRIVATE\fP) или для создания новой. .P Новая очередь сообщений создаётся, если значение \fIkey\fP равно \fBIPC_PRIVATE\fP, или если \fIkey\fP не равно \fBIPC_PRIVATE\fP,не существует ни одной очереди сообщений с заданным ключом \fIkey\fP и в поле \fImsgflg\fP указан флаг \fBIPC_CREAT\fP. .P Если в \fImsgflg\fP одновременно заданы \fBIPC_CREAT\fP и \fBIPC_EXCL\fP и с таким \fIkey\fP очередь сообщений уже существует, то \fBmsgget\fP() завершится с ошибкой и \fIerrno\fP будет равно \fBEEXIST\fP (тот же эффект как для комбинации \fBO_CREAT | O_EXCL\fP у \fBopen\fP(2)). .P При создании права доступа к очереди сообщений определяются младшими битами параметра \fImsgflg\fP. Эти биты прав имеют тот же формат и значение, что и права в аргументе \fImode\fP у вызова \fBopen\fP(2) (право на исполнение не используется). .P Если создаётся новая очередь сообщений, то этот системный вызов инициализирует структуру данных \fImsqid_ds\fP (смотрите \fBmsgctl\fP(2)) следующим образом: .IP \[bu] 3 Полям \fImsg_perm.cuid\fP и \fImsg_perm.uid\fP присваивается эффективный идентификатор пользователя вызывающего процесса. .IP \[bu] Полям \fImsg_perm.cgid\fP и \fImsg_perm.gid\fP присваивается эффективный идентификатор группы вызывающего процесса. .IP \[bu] Младшим 9 битам \fImsg_perm.mode\fP присваивается значение младших 9 битов \fImsgflg\fP. .IP \[bu] \fImsg_qnum\fP, \fImsg_lspid\fP, \fImsg_lrpid\fP, \fImsg_stime\fP и \fImsg_rtime\fP присваивается 0. .IP \[bu] В поле \fImsg_ctime\fP записывается текущее время. .IP \[bu] В поле \fImsg_qbytes\fP записывается системное ограничение \fBMSGMNB\fP. .P Если очередь сообщений уже существует, то проверяются права доступа к ней и не помечена ли она для удаления. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBmsgget\fP() returns the message queue identifier (a nonnegative integer). On failure, \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEACCES\fP Очередь сообщений для ключа \fIkey\fP существует, но вызывающий процесс не имеет прав доступа к ней и не имеет мандата \fBCAP_IPC_OWNER\fP, который управляет его пространством имён IPC. .TP \fBEEXIST\fP В \fImsgflg\fP указаны \fBIPC_CREAT\fP и \fBIPC_EXCL\fP, но очередь сообщений уже существует для \fIkey\fP. .TP \fBENOENT\fP Для ключа \fIkey\fP не существует очереди сообщений, но в \fImsgflg\fP нет флага \fBIPC_CREAT\fP. .TP \fBENOMEM\fP Очередь сообщений необходимо создать, но системе не хватает памяти для хранения новой структуры данных. .TP \fBENOSPC\fP Очередь сообщений необходимо создать, но лимит, определяющий количество очередей сообщений (\fBMSGMNI\fP), уже достигнут. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001, SVr4. .SS Linux Until Linux 2.3.20, Linux would return \fBEIDRM\fP for a \fBmsgget\fP() on a message queue scheduled for deletion. .SH ЗАМЕЧАНИЯ \fBIPC_PRIVATE\fP является не полем с флагами, а имеет тип \fIkey_t\fP. Если при работе с \fIkey\fP используется это специальное значение, то системный вызов игнорирует всё, кроме 9\-ти младших битов в \fImsgflg\fP и создаёт новую очередь сообщений (если это возможно). .P На вызов \fBmsgget\fP() влияет системное ограничение по очередям сообщений: .TP \fBMSGMNI\fP .\" commit 0050ee059f7fc86b1df2527aaa14ed5dc72f9973 Системное ограничение на максимальное количество очередей сообщений. В системах Linux до версии 3.19, значением по умолчанию этого ограничения рассчитывалось на основе формулы зависящей от доступной системной памяти. Начиная с Linux 3.19, значение по умолчанию равно 32000. В Linux это ограничение можно прочитать и изменять через \fI/proc/sys/kernel/msgmni\fP). .SH ДЕФЕКТЫ Имя \fBIPC_PRIVATE\fP, возможно, было выбрано неудачно, \fBIPC_NEW\fP отражает смысл действия более ясно. .SH "СМ. ТАКЖЕ" \fBmsgctl\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBftok\fP(3), \fBcapabilities\fP(7), \fBmq_overview\fP(7), \fBsysvipc\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Alexey , Azamat Hackimov , Dmitriy S. Seregin , Dmitry Bolkhovskikh , ITriskTI , Max Is , Yuri Kozlov , Иван Павлов и Малянов Евгений Викторович . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .