.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mq_getattr 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ mq_getattr, mq_setattr \- возвращает/изменяет атрибуты очереди сообщений .SH LIBRARY Real\-time library (\fIlibrt\fP, \fI\-lrt\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint mq_getattr(mqd_t \fP\fImqdes\fP\fB, struct mq_attr *\fP\fIattr\fP\fB);\fP \fBint mq_setattr(mqd_t \fP\fImqdes\fP\fB, const struct mq_attr *restrict \fP\fInewattr\fP\fB,\fP \fB struct mq_attr *restrict \fP\fIoldattr\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBmq_getattr\fP() и \fBmq_setattr\fP(), соответственно, возвращает и изменяет атрибуты очереди сообщений, на которую ссылается дескриптор очереди сообщений \fImqdes\fP. .PP Функция \fBmq_getattr\fP() возвращает структуру \fImq_attr\fP в буфер, указанный в \fIattr\fP. Эта структура определена следующим образом: .PP .in +4n .EX struct mq_attr { long mq_flags; /* флаги: 0 или O_NONBLOCK */ long mq_maxmsg; /* макс. кол\-во сообщений в очереди */ long mq_msgsize; /* макс. размер сообщения (в байтах) */ long mq_curmsgs; /* кол\-во сообщений в очереди в данный момент */ }; .EE .in .PP В поле \fImq_flags\fP содержатся флаги, связанные с открытым описанием очереди сообщений. Это поле инициализируется при создании очереди с помощью \fBmq_open\fP(3). В этом поле может содержаться только флаг \fBO_NONBLOCK\fP. .PP Поля \fImq_maxmsg\fP и \fImq_msgsize\fP заполняются при создании очереди сообщений с помощью \fBmq_open\fP(3). В поле \fImq_maxmsg\fP содержится верхний предел на количество сообщений, которое может поместиться в очереди с помощью \fBmq_send\fP(3). В поле \fImq_msgsize\fP содержится верхний предел на размер сообщений, которые могут помещаться в очередь. Значение обоих полей должно быть больше нуля. Два файла в \fI/proc\fP, в которых размещаются значения этих полей, описаны в \fBmq_overview\fP(7). .PP В поле \fImq_curmsgs\fP возвращается количество сообщений в очереди в текущей момент времени. .PP Функция \fBmq_setattr\fP() изменяет атрибуты очереди согласно информации из передаваемой структуры \fImq_attr\fP, на которую указывает \fInewattr\fP. Единственным атрибутом, который можно изменить, является флаг \fBO_NONBLOCK\fP в \fImq_flags\fP. Остальные поля в \fInewattr\fP игнорируются. Если поле \fIoldattr\fP не равно NULL, то буфер, на который оно указывает, используется для возврата структуры \fImq_attr\fP, с той же информацией как после вызова \fBmq_getattr\fP(). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBmq_getattr\fP() и \fBmq_setattr\fP() возвращается 0; при ошибке возвращается \-1, а в \fIerrno\fP помещается код ошибки. .SH ОШИБКИ .TP \fBEBADF\fP В \fImqdes\fP размещён некорректный дескриптор очереди сообщений. .TP \fBEINVAL\fP В \fInewattr\->mq_flags\fP содержится набор битов, отличный от \fBO_NONBLOCK\fP. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBmq_getattr\fP(), \fBmq_setattr\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH ВЕРСИИ В Linux, \fBmq_getattr\fP() и \fBmq_setattr\fP() является библиотечными функциями, реализованными на основе системного вызова \fBmq_getsetattr\fP(2). .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH ПРИМЕРЫ Программу, представленную ниже, можно использовать для просмотра значений по умолчанию \fImq_maxmsg\fP и \fImq_msgsize\fP, которые назначаются очереди сообщений, создаваемой вызовом \fBmq_open\fP(3) с аргументом \fIattr\fP, равным NULL. Пример работы программы: .PP .in +4n .EX $ \fB./a.out /testq\fP Максимальное количество сообщений в очереди: 10 Максимальный размер сообщения: 8192 .EE .in .PP Начиная с Linux 3.5 для управления значениями по умолчанию можно использовать следующие файлы в \fI/proc\fP (описаны в \fBmq_overview\fP(7)): .PP .in +4n .EX $ \fBuname \-sr\fP Linux 3.8.0 $ \fBcat /proc/sys/fs/mqueue/msg_default\fP 10 $ \fBcat /proc/sys/fs/mqueue/msgsize_default\fP 8192 .EE .in .SS "Исходный код программы" .\" SRC BEGIN (mq_getattr.c) \& .EX #include #include #include #include #include #include \& #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e } while (0) \& int main(int argc, char *argv[]) { mqd_t mqd; struct mq_attr attr; \& if (argc != 2) { fprintf(stderr, "Usage: %s mq\-name\en", argv[0]); exit(EXIT_FAILURE); } \& mqd = mq_open(argv[1], O_CREAT | O_EXCL, 0600, NULL); if (mqd == (mqd_t) \-1) errExit("mq_open"); \& if (mq_getattr(mqd, &attr) == \-1) errExit("mq_getattr"); \& printf("Maximum # of messages on queue: %ld\en", attr.mq_maxmsg); printf("Maximum message size: %ld\en", attr.mq_msgsize); \& if (mq_unlink(argv[1]) == \-1) errExit("mq_unlink"); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМ. ТАКЖЕ" \fBmq_close\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3), \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\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 .