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

Программа shmread

Программа shmread

Программа shmread (листинг 13.4) проверяет значения, помещенные в разделяемую память программой shmwrite.

Листинг 13.4. Проверка значений в разделяемой памяти

//pxshm/shmread.c
1  #include "unpipc.h"
2  int
3  main(int argc, char **argv)
4  {
5   int i, fd;
6   struct stat stat;
7   unsigned char c, *ptr;
8   if (argc != 2)
9    err_quit("usage: shmread <name>");
10  /* вызываем open, узнаем размер, отображаем в память*/
11  fd = Shm_open(argv[1], O_RDONLY, FILE_MODE);
12  Fstat(fd, &stat);
13  ptr = Mmap(NULL, stat.st_size, PROT_READ,
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   if ((c = *ptr++) != (i % 256))
19    err_ret("ptr[%d] = %d", i, c);
20  exit(0);
21 }

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

16-19 Проверяются значения, помещенные в разделяемую память вызовом shmwrite.

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


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