12.5. Отображение в память в SVR4 с помощью /dev/zero

12.5. Отображение в память в SVR4 с помощью /dev/zero

В листинге 12.5 приведена часть новой версии программы, претерпевшая изменения по сравнению с листингом 12.2 при переходе к использованию отображения с помощью /dev/zero.

Листинг 12.5. Отображение памяти в SVR4 с помощью /dev/zero

//shm/incr_dev_zero.c

3  int

4  main(int argc char **argv)

5  {

6   int fd, i, nloop;

7   int *ptr;

8   sem_t *mutex;

9   if (argc != 2)

10   err_quit("usage: incr_dev_zero <#loops>");

11  nloop = atoi(argv[1]);

12  /* открываем /dev/zero и отображаем в память */

13  fd = Open("/dev/zero", O_RDWR);

14  ptr = Mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

15  Close(fd);

6-11 Автоматическая переменная zero больше не используется, как и аргумент командной строки, задававший имя создаваемого файла.

12-15 Мы открываем файл /dev/zero и передаем его дескриптор функции mmap. Область памяти будет гарантированно проинициализирована нулями.

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