Syscall BSD#268
svc · unix #268
sem_open
Ouvre (ou crée) un sémaphore POSIX nommé et retourne un handle sem_t*.
Prototype
user_addr_t sem_open(const char *name, int oflag, int mode, int value);Retour: user_addr_t
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| name | const char | - | |
| oflag | int | - | |
| mode | int | - | |
| value | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 268 |
| xnu-1699.24.8 | macOS 10.7 Lion | 268 |
| xnu-1486.2.11 | — | 268 |
| xnu-1504.15.3 | — | 268 |
| xnu-1504.3.12 | — | 268 |
| xnu-1504.7.4 | — | 268 |
| xnu-1504.9.17 | — | 268 |
| xnu-1504.9.26 | — | 268 |
| xnu-1504.9.37 | — | 268 |
| xnu-1699.22.73 | — | 268 |
| xnu-1699.22.81 | — | 268 |
| xnu-1699.24.23 | — | 268 |
| xnu-1699.26.8 | — | 268 |
| xnu-1699.32.7 | — | 268 |
Exemples
C — open with initial count
sem_t *s = sem_open("/job-slot", O_CREAT, 0600, 4);
if (s == SEM_FAILED) perror("sem_open");Notes
macOS implémente les sémaphores POSIX nommés au-dessus des sémaphores Mach gardés dans le noyau ; le wrapper libSystem maintient une table de descripteurs refcountée en userspace. sem_init(2) anonyme est volontairement non supporté sur Darwin — il faut utiliser sem_open(3) ou un dispatch_semaphore.
API associées
sem_closesem_unlinksem_waitsem_postdispatch_semaphore_create