sem_init(3) Library Functions Manual sem_init(3)

sem_init - inițializează un semafor fără nume

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

#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);

sem_init() inițializează semaforul fără nume la adresa indicată de sem. Argumentul valoare specifică valoarea inițială a semaforului.

Argumentul pshared indică dacă acest semafor trebuie să fie partajat între firele unui proces sau între procese.

Dacă pshared are valoarea 0, atunci semaforul este partajat între firele de execuție ale unui proces și ar trebui să fie localizat la o adresă care este vizibilă pentru toate firele de execuție (de exemplu, o variabilă globală sau o variabilă alocată dinamic în grămadă „heap”).

Dacă pshared este diferit de zero, atunci semaforul este partajat între procese și ar trebui să fie localizat într-o regiune de memorie partajată (a se vedea shm_open(3), mmap(2) și shmget(2)). (Deoarece un copil creat prin fork(2) moștenește corespondențele de memorie ale părintelui său, acesta poate, de asemenea, să acceseze semaforul). Orice proces care poate accesa regiunea de memorie partajată poate opera asupra semaforului folosind sem_post(3), sem_wait(3) și așa mai departe.

Inițializarea unui semafor care a fost deja inițializat are ca rezultat un comportament nedefinit.

sem_init() returnează 0 în caz de succes; în caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

value depășește SEM_VALUE_MAX.
pshared este diferit de zero, dar sistemul nu acceptă semafoare partajate de procese (a se vedea sem_overview(7)).

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
sem_init() Siguranța firelor MT-Safe

POSIX.1-2008.

POSIX.1-2001.

În mod ciudat, POSIX.1-2001 nu specifică valoarea care ar trebui returnată în cazul unui apel reușit la sem_init(). POSIX.1-2008 rectifică acest lucru, specificând returnarea zero în caz de succes.

A se vedea shm_open(3) și sem_wait(3).

sem_destroy(3), sem_post(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.

31 octombrie 2023 Pagini de manual de Linux 6.06