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

Программа shmread

Программа shmread

Программа shmread, текст которой приведен в листинге 14.4, проверяет последовательность значений, записанную в разделяемую память программой shmwrite.

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

//svshm/shmread.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 c, *ptr;
8   if (argc != 2)
9    err_quit("usage: shmread <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   if ((c = *ptr++) != (i % 256))
16    err_ret("ptr[%d] = %d", i.e);
17  exit(0);
18 }

10-12 Открываем и подключаем сегмент разделяемой памяти. Его размер может быть получен вызовом shmctl с командой IPC_STAT. 13-16 Проверяется последовательность, записанная программой shmwrite.

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


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