Книга: Программирование для Linux. Профессиональный подход
Листинг 5.1. (shm.c) Пример совместного использования памяти
Листинг 5.1. (shm.c) Пример совместного использования памяти
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
int main() {
int segment_id;
char* shared_memory;
struct shmid_ds shmbuffer;
int segment_size;
const int shared_segment_size = 0x6400;
/* Выделение совместно используемого сегмента. */
segment_id =
shmget(IPC_PRIVATE, shared_segment_size,
IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
/* Подключение сегмента. */
shared_memory = (char*)shmat(segment_id, 0, 0);
printf("shared memory attached at address %pn",
shared_memory);
/* Определение размера сегмента. */
shmctl(segment_id, IPC_STAT, &shmbuffer);
segment_size = shmbuffer.shm_segsz;
printf("segment size: %dn", segment_size);
/* Запись строки в сегмент. */
sprintf(shared_memory, "Hello, world.");
/* Отключение сегмента. */
shmdt(shared_memory);
/* Повторное подключение сегмента, но по другому адресу! */
shared_memory =
(char*)shmat(segment_id, (void*) 0x5000000, 0);
printf("shared memory reattached at address %pn",
shared_memory);
/* Отображение строки, хранящейся в совместно используемой
памяти. */
printf("%sn", shared_memory);
/* Отключение сегмента. */
shmdt(shared_memory);
/* Освобождение сегмента. */
shmctl(segment_id, IPC_RMID, 0);
return 0;
}
- shmdt
- 5.1.6. Пример программы
- 29. «Оплата по факту использования» Платите только за то, чем воспользовались
- 4.3. Общие случаи использования отсечения
- Пример установочного скрипта
- Пример из практики
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы