Man page - mq_receive(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

mq_receive

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
ATRIBUTE
VERSIUNI
STANDARDE
ISTORIC
CONSULTAȚI ȘI
TRADUCERE

NUME

mq_receive, mq_timedreceive - primește un mesaj de la o coadă de mesaje

BIBLIOTECA

Biblioteca de timp real ( librt , -lrt )

SINOPSIS

#include <mqueue.h>

ssize_t mq_receive(mqd_t mqdes , char msg_ptr [. msg_len ],
size_t
msg_len , unsigned int * msg_prio );

#include <time.h>
#include <mqueue.h>

ssize_t mq_timedreceive(mqd_t mqdes , char *restrict msg_ptr [. msg_len ],
size_t
msg_len , unsigned int *restrict msg_prio ,
const struct timespec *restrict
abs_timeout );

Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros (7)):

mq_timedreceive ():
_POSIX_C_SOURCE >= 200112L

DESCRIERE

mq_receive () elimină cel mai vechi mesaj cu cea mai mare prioritate din coada de așteptare a mesajelor la care se face referire prin descriptorul cozii de așteptare a mesajelor mqdes și îl plasează în memoria tampon indicată de msg_ptr . Argumentul msg_len specifică dimensiunea tamponului indicat de msg_ptr ; aceasta trebuie să fie mai mare sau egală cu atributul mq_msgsize al cozii de așteptare (a se vedea mq_getattr (3)). În cazul în care msg_prio nu este NULL, atunci memoria tampon către care indică este utilizată pentru a returna prioritatea asociată mesajului primit.

Dacă coada de mesaje este goală, atunci, în mod implicit, mq_receive () se blochează până când un mesaj devine disponibil sau până când apelul este întrerupt de un gestionar de semnal. În cazul în care indicatorul O_NONBLOCK este activat pentru descrierea cozii de mesaje, atunci apelul eșuează imediat cu eroarea EAGAIN .

mq_timedreceive () se comportă la fel ca și mq_receive (), cu excepția faptului că, dacă coada este goală și dacă fanionul O_NONBLOCK nu este activat pentru descrierea cozii de mesaje, atunci abs_timeout indică o structură care specifică cât timp se va bloca apelul. Această valoare este un timp de așteptare absolut în secunde și nanosecunde de la Epocă, 1970-01-01 00:00:00 +0000 (UTC), specificat într-o structură timespec (3).

În cazul în care nu este disponibil niciun mesaj, iar timpul de așteptare a expirat deja în momentul apelului, mq_timedreceive () returnează imediat.

VALOAREA RETURNATĂ

În caz de succes, mq_receive () și mq_timedreceive () returnează numărul de octeți din mesajul primit; în caz de eroare, se returnează -1, cu errno configurată pentru a indica eroarea.

ERORI-IEȘIRE

EAGAIN

Coada de așteptare era goală, iar fanionul O_NONBLOCK a fost activat pentru descrierea cozii de așteptare a mesajelor la care face referire mqdes .

EBADF

Descriptorul specificat în mqdes a fost nevalid sau nu a fost deschis pentru citire.

EINTR

Apelul a fost întrerupt de un gestionar de semnal; a se vedea signal (7).

EINVAL

Apelul s-a blocat, iar abs_timeout a fost nevalid, fie pentru că tv_sec a fost mai mic decât zero, fie pentru că tv_nsec a fost mai mic decât zero sau mai mare decât 1000 de milioane.

EMSGSIZE

msg_len a fost mai mică decât atributul mq_msgsize al cozii de mesaje.

ETIMEDOUT

Apelul s-a întrerupt înainte de a putea fi transferat un mesaj.

ATRIBUTE

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes (7).

Image grohtml-665821-1.png

VERSIUNI

În Linux, mq_timedreceive () este un apel de sistem, iar mq_receive () este o funcție de bibliotecă suprapusă peste acest apel de sistem.

STANDARDE

POSIX.1-2008.

ISTORIC

POSIX.1-2001.

CONSULTAȚI ȘI

mq_close (3), mq_getattr (3), mq_notify (3), mq_open (3), mq_send (3), mq_unlink (3), timespec (3), mq_overview (7), time (7)

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net .