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

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țăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ 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)