Skip to content
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

NameTypeDirDescription
nameconst char-
oflagint-
modeint-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard266
xnu-1699.24.8macOS 10.7 Lion266
xnu-2050.18.24macOS 10.8 Mountain Lion266
xnu-1486.2.11266
xnu-1504.15.3266
xnu-1504.3.12266
xnu-1504.7.4266
xnu-1504.9.17266
xnu-1504.9.26266
xnu-1504.9.37266
xnu-1699.22.73266
xnu-1699.22.81266
xnu-1699.24.23266
xnu-1699.26.8266
xnu-1699.32.7266
xnu-2050.22.13266
xnu-2050.24.15266
xnu-2050.48.11266
xnu-2050.7.9266
xnu-2050.9.2266

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