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

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. Область памяти будет гарантированно проинициализирована нулями.

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


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