Provided by: manpages-ro-dev_4.27.0-1_all 

NUME
mq_getattr, mq_setattr - obține/stabilește atributele cozii de mesaje
BIBLIOTECA
Biblioteca de timp real (librt, -lrt)
SINOPSIS
#include <mqueue.h> int mq_getattr(mqd_t mqdes, struct mq_attr *attr); int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict newattr, struct mq_attr *restrict oldattr);
DESCRIERE
mq_getattr() și mq_setattr() extrag și, respectiv, modifică atributele cozii de așteptare a mesajelor la care se face referire prin descriptorul cozii de așteptare a mesajelor mqdes. mq_getattr() returnează o structură mq_attr în memoria tampon indicată de attr. Această structură se definește astfel: struct mq_attr { long mq_flags; /* Fanioane: 0 sau O_NONBLOCK */ long mq_maxmsg; /* Numărul maxim de mesaje în coadă */ long mq_msgsize; /* Dimensiunea maximă a mesajului (octeți)) */ long mq_curmsgs; /* Numărul de mesaje aflate în prezent în coadă */ }; Câmpul mq_flags conține fanioanele asociate cu descrierea cozii de mesaje deschise. Acest câmp este inițializat atunci când coada este creată de mq_open(3). Singurul fanion care poate apărea în acest câmp este O_NONBLOCK. Câmpurile mq_maxmsg și mq_msgsize sunt stabilite atunci când coada de mesaje este creată de mq_open(3). Câmpul mq_maxmsg reprezintă o limită superioară a numărului de mesaje care pot fi plasate în coada de așteptare cu ajutorul mq_send(3). Câmpul mq_msgsize este o limită superioară a dimensiunii mesajelor care pot fi plasate în coada de așteptare. Ambele câmpuri trebuie să aibă o valoare mai mare decât zero. Două fișiere /proc care impun plafoane pentru valorile acestor câmpuri sunt descrise în mq_overview(7). Câmpul mq_curmsgs returnează numărul de mesaje aflate în prezent în coada de așteptare. mq_setattr() stabilește atributele cozii de mesaje utilizând informațiile furnizate în structura mq_attr indicată de newattr. Singurul atribut care poate fi modificat este stabilirea fanionului O_NONBLOCK din mq_flags. Celelalte câmpuri din newattr sunt ignorate. În cazul în care câmpul oldattr nu este NULL, atunci memoria tampon la care indică este utilizată pentru a returna o structură mq_attr care conține aceleași informații ca cele returnate de mq_getattr().
VALOAREA RETURNATĂ
În caz de succes, mq_getattr() și mq_setattr() returnează 0; în caz de eroare, se returnează -1, cu errno configurată pentru a indica eroarea.
ERORI-IEȘIRE
EBADF Descriptorul de coadă de mesaje specificat în mqdes nu este valid. EINVAL newattr->mq_flags conținea alți biți activați decât O_NONBLOCK.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7). ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐ │ Interfață │ Atribut │ Valoare │ ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤ │ mq_getattr(), mq_setattr() │ Siguranța firelor │ MT-Safe │ └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘
VERSIUNI
În Linux, mq_getattr() și mq_setattr() sunt funcții de bibliotecă suprapuse peste apelul de sistem mq_getsetattr(2).
STANDARDE
POSIX.1-2008.
ISTORIC
POSIX.1-2001.
EXEMPLE
Programul de mai jos poate fi utilizat pentru a arăta valorile implicite mq_maxmsg și mq_msgsize care sunt atribuite unei cozi de așteptare a mesajelor care este creată cu un apel la mq_open(3) în care argumentul attr este NULL. Iată un exemplu de execuție a programului: $ ./a.out /testq Numărul maxim de mesaje din coada de așteptare: 10 Dimensiunea maximă a mesajului: 8192 Începând cu Linux 3.5, următoarele fișiere /proc (descrise în mq_overview(7)) pot fi utilizate pentru a controla valorile implicite: $ uname -sr Linux 3.8.0 $ cat /proc/sys/fs/mqueue/msg_default 10 $ cat /proc/sys/fs/mqueue/msgsize_default 8192 Sursa programului #include <fcntl.h> #include <mqueue.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <unistd.h> #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ } while (0) int main(int argc, char *argv[]) { mqd_t mqd; struct mq_attr attr; if (argc != 2) { fprintf(stderr, "Utilizare: %s mq-name\n", 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("Numărul maxim de mesaje din coada de așteptare: %ld\n", attr.mq_maxmsg); printf("Dimensiunea maximă a mesajului: %ld\n", attr.mq_msgsize); if (mq_unlink(argv[1]) == -1) errExit("mq_unlink"); exit(EXIT_SUCCESS); }
CONSULTAȚI ȘI
mq_close(3), mq_notify(3), mq_open(3), mq_receive(3), mq_send(3), mq_unlink(3), mq_overview(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. Pagini de manual de Linux 6.9.1 15 iunie 2024 mq_getattr(3)