Provided by: manpages-ro-dev_4.21.0-2_all
NUME
mq_send, mq_timedsend - trimite un mesaj la o coadă de mesaje
BIBLIOTECA
Biblioteca de timp real (librt, -lrt)
REZUMAT
#include <mqueue.h> int mq_send(mqd_t mqdes, const char msg_ptr[.msg_len], size_t msg_len, unsigned int msg_prio); #include <time.h> #include <mqueue.h> int mq_timedsend(mqd_t mqdes, const char msg_ptr[.msg_len], size_t msg_len, unsigned int msg_prio, const struct timespec *abs_timeout); Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)): mq_timedsend(): _POSIX_C_SOURCE >= 200112L
DESCRIERE
mq_send() adaugă mesajul indicat de msg_ptr la coada de așteptare a mesajelor la care face referire descriptorul cozii de așteptare a mesajelor mqdes. Argumentul msg_len specifică lungimea mesajului indicat de msg_ptr; această lungime trebuie să fie mai mică sau egală cu atributul mq_msgsize al cozii de așteptare. Sunt permise mesajele cu lungime zero. Argumentul msg_prio este un număr întreg nenegativ care specifică prioritatea acestui mesaj. Mesajele sunt plasate în coada de așteptare în ordinea descrescătoare a priorității, mesajele mai noi cu aceeași prioritate fiind plasate după mesajele mai vechi cu aceeași prioritate. A se vedea mq_overview(7) pentru detalii privind intervalul de prioritate a mesajelor. Dacă coada de mesaje este deja plină (adică numărul de mesaje din coadă este egal cu atributul mq_maxmsg al cozii), atunci, în mod implicit, mq_send() se blochează până când devine disponibil suficient spațiu pentru a permite ca mesajul să fie pus în coadă sau până când apelul este întrerupt de un gestionar de semnal. În cazul în care fanionul O_NONBLOCK este activat pentru descrierea cozii de mesaje, atunci apelul eșuează imediat cu eroarea EAGAIN. mq_timedsend() se comportă la fel ca mq_send(), cu excepția faptului că, dacă coada de așteptare este plină, iar fanionul O_NONBLOCK nu este activat pentru descrierea cozii de așteptare a mesajelor, 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 Epoca, 1970-01-01 00:00:00 +0000 (UTC), specificat într-o structură timespec(3). În cazul în care coada de așteptare a mesajelor este plină, iar timpul de așteptare a expirat deja în momentul apelului, mq_timedsend() returnează imediat.
VALOAREA RETURNATĂ
În caz de succes, mq_send() și mq_timedsend() returnează zero; în caz de eroare, se returnează -1, cu errno configurată pentru a indica eroarea.
ERORI
EAGAIN Coada de așteptare a fost plină, iar fanionul O_NONBLOCK a fost configurat pentru descrierea cozii de așteptare a mesajelor la care face referire mqdes. EBADF Descriptorul specificat în mqdes nu a fost valid sau nu era deschis pentru scriere. 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 mare decât atributul mq_msgsize al cozii de așteptare a mesajelor. 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). ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐ │Interfață │ Atribut │ Valoare │ ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤ │mq_send(), mq_timedsend() │ Siguranța firelor │ MT-Safe │ └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘
STANDARDE
POSIX.1-2001, POSIX.1-2008.
NOTE
În Linux, mq_timedsend() este un apel de sistem, iar mq_send() este o funcție de bibliotecă suprapusă peste acest apel de sistem.
CONSULTAȚI ȘI
mq_close(3), mq_getattr(3), mq_notify(3), mq_open(3), mq_receive(3), mq_unlink(3), timespec(3), mq_overview(7), time(7)
TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org> Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.