📌 shmget
shmget
— системный вызов System V Shared Memory в Unix/Linux, предназначенный для создания или получения идентификатора сегмента общей памяти (shared memory segment).
🧠 Как работает
shmget
создаёт или получает сегмент общей памяти:
int shmget(key_t key, size_t size, int shmflg);
-
key
— уникальный идентификатор (например,ftok()
илиIPC_PRIVATE
) -
size
— размер сегмента в байтах -
shmflg
— флаги доступа и поведения:IPC_CREAT
,IPC_EXCL
,0666
Результат — ID сегмента, который используется в:
-
shmat()
— подключение к памяти -
shmdt()
— отключение от сегмента -
shmctl()
— управление (удаление, информация)
⚙️ Где применяется
Контекст | Описание |
---|---|
Shared Memory (System V) | Создание/доступ к общему сегменту |
IPC между процессами | Быстрый обмен данными через RAM |
RTOS и Embedded | Статически распределённая память |
💻 Пример (C)
key_t key = ftok("file.txt", 65);
int shmid = shmget(key, 1024, 0666 | IPC_CREAT);
char *data = (char*) shmat(shmid, (void*)0, 0);
strcpy(data, "hello from shared memory");
✅ Преимущества
-
Простое и классическое API
-
Поддерживается всеми POSIX-системами
-
Работает даже без
mmap()