.\" -*- 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_open 3 "23 iulie 2024" "Pagini de manual de Linux 6.12" .SH NUME mq_open \- deschide o coadă de mesaje .SH BIBLIOTECA Biblioteca de timp real (\fIlibrt\fP, \fI\-lrt\fP) .SH SINOPSIS .nf \fB#include \fP /* Pentru constantele O_* */ \fB#include \fP /* Pentru constantele de mod */ \fB#include \fP .P \fBmqd_t mq_open(const char *\fP\fInume\fP\fB, int \fP\fIoflag\fP\fB);\fP \fBmqd_t mq_open(const char *\fP\fInume\fP\fB, int \fP\fIoflag\fP\fB, mode_t \fP\fImode\fP\fB,\fP \fB struct mq_attr *\fP\fIattr\fP\fB);\fP .fi .SH DESCRIERE \fBmq_open\fP() creează o nouă coadă de mesaje POSIX sau deschide o coadă existentă. Coada este identificată prin \fInume\fP. Pentru detalii despre construcția lui \fInume\fP, consultați \fBmq_overview\fP(7). .P Argumentul \fIoflag\fP specifică fanioanele care controlează funcționarea apelului; (definițiile valorilor fanioanelor pot fi obținute prin includerea \fI\fP). În \fIoflag\fP trebuie specificat exact unul dintre următoarele: .TP \fBO_RDONLY\fP Deschide coada numai pentru a primi mesaje. .TP \fBO_WRONLY\fP Deschide coada numai pentru a trimite mesaje. .TP \fBO_RDWR\fP Deschide coada pentru a trimite și a primi mesaje. .P Zero sau mai multe dintre următoarele fanioane pot fi adăugate cu operatorul \fIOR\fP în \fIoflag\fP: .TP \fBO_CLOEXEC\fP (începând cu Linux 2.6.26) .\" commit 269f21344b23e552c21c9e2d7ca258479dcd7a0a Activează fanionul close\-on\-exec pentru descriptorul cozii de mesaje. Consultați \fBopen\fP(2) pentru a afla de ce este util acest fanion. .TP \fBO_CREAT\fP .\" In reality the filesystem IDs are used on Linux. Creează coada de mesaje dacă aceasta nu există. Proprietarul (ID utilizator) cozii de mesaje este stabilit la ID\-ul utilizatorului efectiv al procesului apelant. Grupul proprietar (ID de grup) este stabilit la ID\-ul de grup efectiv al procesului apelant. .TP \fBO_EXCL\fP Dacă \fBO_CREAT\fP a fost specificat în \fIoflag\fP, iar o coadă cu numele \fInume\fP dat există deja, atunci eșuează cu eroarea \fBEEXIST\fP. .TP \fBO_NONBLOCK\fP Deschide coada în modul neblocant. În situațiile în care \fBmq_receive\fP(3) și \fBmq_send\fP(3) s\-ar bloca în mod normal, aceste funcții eșuează cu eroarea \fBEAGAIN\fP. .P Dacă \fBO_CREAT\fP este specificat în \fIoflag\fP, atunci trebuie furnizate două argumente suplimentare. Argumentul \fImode\fP specifică permisiunile care urmează să fie plasate pe noua coadă, ca pentru \fBopen\fP(2); (definițiile simbolice pentru biții de permisiuni pot fi obținute prin includerea \fI\fP). Definițiile permisiunilor sunt mascate față de umask\-ul procesului. .P Câmpurile din \fIstruct mq_attr\fP indicată de \fIattr\fP specifică numărul maxim de mesaje și dimensiunea maximă a mesajelor pe care coada le va permite. Această structură este definită după cum urmează: .P .in +4n .EX struct mq_attr { long mq_flags; /* Fanioane (ignorate pentru mq_open()) */ long mq_maxmsg; /* Nr. maxim de mesaje în coadă */ long mq_msgsize; /* Dimensiunea maximă a mesajului (octeți) */ long mq_curmsgs; /* Nr. de mesaje aflate în prezent în coadă (ignorat pentru mq_open()) */ }; .EE .in .P Numai câmpurile \fImq_maxmsg\fP și \fImq_msgsize\fP sunt utilizate atunci când se apelează \fBmq_open\fP(); valorile din celelalte câmpuri sunt ignorate. .P Dacă \fIattr\fP este NULL, atunci coada este creată cu atribute implicite definite de implementare. Începând cu Linux 3.5, pot fi utilizate două fișiere \fI/proc\fP pentru a controla aceste valori implicite; consultați \fBmq_overview\fP(7) pentru detalii. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBmq_open\fP() returnează un descriptor al cozii de mesaje pentru a fi utilizat de alte funcții ale cozii de mesaje. În caz de eroare, \fBmq_open\fP() returnează \fI(mqd_t)\ \-1\fP, cu \fIerrno\fP configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEACCES\fP Coada există, dar apelantul nu are permisiunea de a o deschide în modul specificat. .TP \fBEACCES\fP .\" Note that this isn't consistent with the same case for sem_open() \fInume\fP conține mai mult de o bară oblică. .TP \fBEEXIST\fP Atât \fBO_CREAT\fP cât și \fBO_EXCL\fP au fost specificate în \fIoflag\fP, dar o coadă cu acest \fInume\fP există deja. .TP \fBEINVAL\fP .\" glibc checks whether the name starts with a "/" and if not, .\" gives this error \fInume\fP nu respectă formatul din \fBmq_overview\fP(7). .TP \fBEINVAL\fP \fBO_CREAT\fP a fost specificat în \fIoflag\fP, iar \fIattr\fP nu era NULL, dar \fIattr\->mq_maxmsg\fP sau \fIattr\->mq_msqsize\fP nu era valid. Ambele câmpuri trebuie să fie mai mari decât zero. Într\-un proces neprivilegiat (care nu are capacitatea \fBCAP_SYS_RESOURCE\fP), \fIattr\->mq_maxmsg\fP trebuie să fie mai mic sau egal cu limita \fImsg_max\fP, iar \fIattr\->mq_msgsize\fP trebuie să fie mai mic sau egal cu limita \fImsgsize_max\fP. În plus, chiar și într\-un proces privilegiat, \fIattr\->mq_maxmsg\fP nu poate depăși limita \fBHARD_MAX\fP; (consultați \fBmq_overview\fP(7) pentru detalii despre aceste limite). .TP \fBEMFILE\fP A fost atinsă limita per\-proces a numărului de descriptori de fișiere și de cozi de mesaje deschise (a se vedea descrierea \fBRLIMIT_NOFILE\fP în \fBgetrlimit\fP(2)). .TP \fBENAMETOOLONG\fP \fInume\fP era prea lung. .TP \fBENFILE\fP A fost atinsă limita la nivel de sistem privind numărul total de fișiere și cozi de mesaje deschise. .TP \fBENOENT\fP Fanionul \fBO_CREAT\fP nu a fost specificat în \fIoflag\fP și nu există nicio coadă cu acest \fInume\fP. .TP \fBENOENT\fP .\" Note that this isn't consistent with the same case for sem_open() \fInume\fP era doar „/” urmat de niciun alt caracter. .TP \fBENOMEM\fP Memorie insuficientă. .TP \fBENOSPC\fP Spațiu insuficient pentru crearea unei noi cozi de mesaje. Acest lucru s\-a întâmplat probabil pentru că s\-a atins limita \fIqueues_max\fP; a se vedea \fBmq_overview\fP(7). .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBmq_open\fP() T} Siguranța firelor MT\-Safe .TE .SH VERSIUNI .SS "Diferențe între biblioteca C și nucleu" Funcția de bibliotecă \fBmq_open\fP() este implementată peste un apel de sistem cu același nume. Funcția de bibliotecă verifică dacă \fInume\fP începe cu o bară oblică (/), generând eroarea \fBEINVAL\fP în caz contrar. Apelul de sistem al nucleului se așteaptă ca \fInume\fP să nu conțină nicio bară oblică anterioară, astfel încât funcția de bibliotecă C transmite \fInume\fP fără bara oblică anterioară (adică \fInume+1\fP) către apelul de sistem. .SH STANDARDE POSIX.1\-2008. .SH ISTORIC POSIX.1\-2001. .SH ERORI Înainte de Linux 2.6.14, umask\-ul procesului nu era aplicat permisiunilor specificate în \fImode\fP. .SH "CONSULTAȚI ȘI" \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .