.\" -*- 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_receive 3 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ mq_receive, mq_timedreceive \- выбирают сообщения из очереди сообщений .SH LIBRARY Real\-time library (\fIlibrt\fP, \fI\-lrt\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBssize_t mq_receive(mqd_t \fP\fImqdes\fP\fB, char \fP\fImsg_ptr\fP\fB[.\fP\fImsg_len\fP\fB],\fP \fB size_t \fP\fImsg_len\fP\fB, unsigned int *\fP\fImsg_prio\fP\fB);\fP .P \fB#include \fP \fB#include \fP .P \fBssize_t mq_timedreceive(mqd_t \fP\fImqdes\fP\fB, char *restrict \fP\fImsg_ptr\fP\fB[.\fP\fImsg_len\fP\fB],\fP \fB size_t \fP\fImsg_len\fP\fB, unsigned int *restrict \fP\fImsg_prio\fP\fB,\fP \fB const struct timespec *restrict \fP\fIabs_timeout\fP\fB);\fP .fi .P .ad l .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBmq_timedreceive\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH ОПИСАНИЕ Функция \fBmq_receive\fP() удаляет самое старое сообщение с наивысшим приоритетом из очереди сообщений, на которою указывает дескриптор очереди сообщений \fImqdes\fP, и помещает сообщение в буфер, на который указывает \fImsg_ptr\fP. В аргументе \fImsg_len\fP задаётся размер буфера, на который указывает \fImsg_ptr\fP; он должен быть больше или равен атрибуту очереди \fImq_msgsize\fP (смотрите \fBmq_getattr\fP(3)). Если \fImsg_prio\fP не равно NULL, то указанный в нём буфер используется для возврата приоритета, связанного с полученным сообщением. .P Если очередь пуста, то по умолчанию функция \fBmq_receive\fP() блокирует выполнение до тех пор, показ не поступит сообщение или вызов не будет прерван обработчиком сигнала. Если в описании очереди сообщений включён флаг \fBO_NONBLOCK\fP, то вызов завершается сразу же с ошибкой \fBEAGAIN\fP. .P \fBmq_timedreceive\fP() behaves just like \fBmq_receive\fP(), except that if the queue is empty and the \fBO_NONBLOCK\fP flag is not enabled for the message queue description, then \fIabs_timeout\fP points to a structure which specifies how long the call will block. This value is an absolute timeout in seconds and nanoseconds since the Epoch, 1970\-01\-01 00:00:00 +0000 (UTC), specified in a \fBtimespec\fP(3) structure. .P Если сообщения нет и вышло время ожидания на момент вызова, то \fBmq_timedreceive\fP() сразу же завершается. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBmq_receive\fP() и \fBmq_timedreceive\fP() возвращается количество байт в полученном сообщении; при ошибке возвращается \-1 и в \fIerrno\fP записывается значение ошибки. .SH ОШИБКИ .TP \fBEAGAIN\fP Очередь была пуста и в описании очереди сообщений, на которое ссылается \fImqdes\fP, указан флаг \fBO_NONBLOCK\fP. .TP \fBEBADF\fP В \fImqdes\fP указан некорректный или не открытый на чтение дескриптор. .TP \fBEINTR\fP Вызов был прерван обработчиком сигнала; смотрите \fBsignal\fP(7). .TP \fBEINVAL\fP Вызов бы заблокировался и в \fIabs_timeout\fP указано некорректное значение, так как \fItv_sec\fP меньше нуля или \fItv_nsec\fP меньше нуля или более 1000 миллионов. .TP \fBEMSGSIZE\fP \fImsg_len\fP меньше чем свойство очереди сообщений, \fImq_msgsize\fP. .TP \fBETIMEDOUT\fP Истёк период ожидания в вызове, раньше появления возможности передачи сообщения. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBmq_receive\fP(), \fBmq_timedreceive\fP() T} Безвредность в нитях MT\-Safe .TE .SH ВЕРСИИ В Linux, \fBmq_receive\fP() является системным вызовом, а \fBmq_timedreceive\fP() — библиотечной функцией, реализованной на основе этого системного вызова: .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH "СМ. ТАКЖЕ" \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBtimespec\fP(3), \fBmq_overview\fP(7), \fBtime\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 .