Программа shmread

We use cookies. Read the Privacy and Cookie Policy

Программа 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.

Данный текст является ознакомительным фрагментом.