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

Программа shmwrite

Программа shmwrite

В листинге 13.3 приведен текст программы shmwrite, записывающей последовательность 0, 1, 2 254, 244, 0, 1 и т. д. в объект разделяемой памяти.

Листинг 13.3. Заполнение разделяемой памяти

//pxshm/shmwrite.с
1  #include "unpipc.h"
2  int
3  main(int argc, char **argv)
4  {
5   int i, fd;
6   struct stat stat;
7   unsigned char *ptr;
8   if (argc != 2)
9    err_quit("usage: shmwrite <name>");
10  /* open, определяем размер, отображаем в память */
11  fd = Shm_open(argv[1], O_RDWR, FILE_MODE);
12  Fstat(fd, &stat);
13  ptr = Mmap(NULL, stat.st_size, PROT_READ | PROT_WRITE,
14   MAP_SHARED, fd, 0);
15  Close(fd);
16  /* присваиваем: ptr[0] = 0, ptr[1] = 1 и т. д. */
17  for (i = 0; i < stat.st_size; i++)
18   *ptr++ = i % 256;
19  exit(0);
20 }

10-15 Объект разделяемой памяти открывается вызовом shm_open. Его размер мы узнаем с помощью fstat. Затем файл отображается в память вызовом mmap, после чего его дескриптор может быть закрыт.

16-18 Последовательность записывается в разделяемую память.

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


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