Syscall BSD#266
svc · unix #266
shm_open
Ouvre (ou crée) un objet de mémoire partagée POSIX nommé et retourne un descripteur de fichier.
Prototype
int shm_open(const char *name, int oflag, int mode);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| name | const char | - | |
| oflag | int | - | |
| mode | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 266 |
| xnu-1699.24.8 | macOS 10.7 Lion | 266 |
| xnu-2050.18.24 | macOS 10.8 Mountain Lion | 266 |
| xnu-1486.2.11 | — | 266 |
| xnu-1504.15.3 | — | 266 |
| xnu-1504.3.12 | — | 266 |
| xnu-1504.7.4 | — | 266 |
| xnu-1504.9.17 | — | 266 |
| xnu-1504.9.26 | — | 266 |
| xnu-1504.9.37 | — | 266 |
| xnu-1699.22.73 | — | 266 |
| xnu-1699.22.81 | — | 266 |
| xnu-1699.24.23 | — | 266 |
| xnu-1699.26.8 | — | 266 |
| xnu-1699.32.7 | — | 266 |
| xnu-2050.22.13 | — | 266 |
| xnu-2050.24.15 | — | 266 |
| xnu-2050.48.11 | — | 266 |
| xnu-2050.7.9 | — | 266 |
| xnu-2050.9.2 | — | 266 |
Exemples
C — create and map
int fd = shm_open("/sample.shm", O_CREAT | O_RDWR, 0600);
ftruncate(fd, 0x4000);
void *p = mmap(NULL, 0x4000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);Notes
Sur macOS, shm_open(2) s'appuie sur un objet noyau de type tmpfs — pas de fichier visible sur disque malgré la convention du slash initial. Le fd est dimensionné par ftruncate(2) puis mappé via mmap(2, MAP_SHARED). Le profil sandbox doit accorder (ipc-posix-shm-read*/ipc-posix-shm-write*) pour le partage inter-processus ; les daemons XPC et le WebContent en sont des exemples typiques.
API associées
shm_unlinkmmapftruncatemach_make_memory_entryxpc_shmem_create