sem_open(3)

NUME
sem_open - inițializează și deschide un semafor numit

BIBLIOTECA
Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

REZUMAT
#include <fcntl.h>           /* Pentru constantele O_* */
#include <sys/stat.h>        /* Pentru constantele de mod */
#include <semaphore.h>

sem_t *sem_open(const char *nume, int oflag);
sem_t *sem_open(const char *nume, int oflag,
                mode_t mod, unsigned int valoare);

DESCRIERE
sem_open() creează un nou semafor POSIX sau deschide un semafor existent. Semaforul este identificat prin nume. Pentru detalii privind construcția lui nume, a se vedea sem_overview(7).

Argumentul oflag specifică indicatori care controlează funcționarea apelului (definițiile valorilor fanioanelor pot fi obținute prin includerea <fcntl.h>). Dacă O_CREAT este specificat în oflag, atunci se creează semaforul, dacă nu există deja. Proprietarul (ID-ul de utilizator) al semaforului este stabilit la ID-ul de utilizator efectiv al procesului apelant. Proprietarul grupului (ID de grup) este stabilit la ID-ul efectiv de grup al procesului apelant. În cazul în care atât O_CREAT, cât și O_EXCL sunt specificate în oflag, atunci se trimite o eroare dacă există deja un semafor cu numele dat.

Dacă O_CREAT este specificat în oflag, atunci trebuie furnizate două argumente suplimentare. Argumentul mod specifică permisiunile care trebuie să fie plasate pe noul semafor, ca pentru open(2) (definițiile simbolice pentru biții de permisiune pot fi obținute prin includerea <sys/stat.h>). Valorile de configurare a permisiunilor sunt mascate față de „umask” al procesului. Trebuie acordate atât permisiuni de citire, cât și de scriere pentru fiecare clasă de utilizator care va accesa semaforul. Argumentul valoare specifică valoarea inițială pentru noul semafor. Dacă se specifică O_CREAT și există deja un semafor cu numele dat, atunci mod și valoare sunt ignorate.

VALOAREA RETURNATĂ
În caz de succes, sem_open() returnează adresa noului semafor; această adresă este utilizată la apelarea altor funcții legate de semafoare. În caz de eroare, sem_open() returnează SEM_FAILED, cu errno configurată pentru a indica eroarea.

ERORI

EACCES
    Semaforul există, dar apelantul nu are permisiunea de a-l deschide.

EEXIST
    Atât O_CREAT, cât și O_EXCL au fost specificate în oflag, dar un semafor cu acest nume există deja.

EINVAL
    valoarea a fost mai mare decât SEM_VALOARE_MAX.

EINVAL
    nume este format doar din „/”, urmată de niciun alt caracter.

EMFILE
    Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă.

ENAMETOOLONG
    nume era prea lung.

ENFILE
    Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.

ENOENT
    Fanionul O_CREAT nu a fost specificat în oflag și nu există niciun semafor cu acest nume; sau, O_CREAT a fost specificat, dar nume nu a fost bine format.

ENOMEM
    Memorie insuficientă.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
sem_open() | Siguranța firelor | MT-Safe

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001.

CONSULTAȚI ȘI
sem_close(3), sem_getvalue(3), sem_post(3), sem_unlink(3), sem_wait(3), sem_overview(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.