Книга: UNIX: взаимодействие процессов

Программа shmwrite

Программа shmwrite

В листинге 14.3 приведен текст программы shmwrite, которая заполняет сегмент разделяемой памяти последовательностью значений 0, 1, 2, …, 254, 255, 0, 1 и т. д.

Листинг 14.3. Заполнение сегмента разделяемой памяти последовательностью чисел

//svshm/shmwrite.c
1  #include "unpipc.h"
2  int
3  main(int argc, char **argv)
4  {
5   int i, id;
6   struct shmid_ds buff;
7   unsigned char *ptr;
8   if (argc != 2)
9    err_quit("usage: shmwrite <pathname>");
10  id = Shmget(Ftok(argv[1], 0), 0, SVSHM_MODE);
11  ptr = Shmat(id, NULL, 0);
12  Shmctl(id, IPC_STAT, &buff);
13  /* присваиваем: ptr[0] = 0, ptr[1] = 1 и т. д. */
14  for (i = 0; i < buff.shm_segsz; i++)
15   *ptr++ = i % 256;
16  exit(0);
17 }

10-12 Сегмент разделяемой памяти открывается вызовом shmget и подключается вызовом shmat. Его размер может быть получен вызовом shmctl с командой IPC_STAT.

13-15 В разделяемую память записывается последовательность значений.

Оглавление книги


Генерация: 0.949. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз