sem_open(3) Library Functions Manual sem_open(3)

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

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

#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);

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.

Î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.

Semaforul există, dar apelantul nu are permisiunea de a-l deschide.
Atât O_CREAT, cât și O_EXCL au fost specificate în oflag, dar un semafor cu acest nume există deja.
valoarea a fost mai mare decât SEM_VALOARE_MAX.
nume este format doar din „/”, urmată de niciun alt caracter.
Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă.
nume era prea lung.
Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă.
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.
Memorie insuficientă.

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

POSIX.1-2008.

POSIX.1-2001.

sem_close(3), sem_getvalue(3), sem_post(3), sem_unlink(3), sem_wait(3), sem_overview(7)

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.

2 mai 2024 Pagini de manual de Linux 6.8