📌 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()