Книга: UNIX: взаимодействие процессов
Программа shmwrite
Программа shmwrite
В листинге 13.3 приведен текст программы shmwrite, записывающей последовательность 0, 1, 2 254, 244, 0, 1 и т. д. в объект разделяемой памяти.
Листинг 13.3. Заполнение разделяемой памяти
//pxshm/shmwrite.с
1 #include "unpipc.h"
2 int
3 main(int argc, char **argv)
4 {
5 int i, fd;
6 struct stat stat;
7 unsigned char *ptr;
8 if (argc != 2)
9 err_quit("usage: shmwrite <name>");
10 /* open, определяем размер, отображаем в память */
11 fd = Shm_open(argv[1], O_RDWR, FILE_MODE);
12 Fstat(fd, &stat);
13 ptr = Mmap(NULL, stat.st_size, PROT_READ | PROT_WRITE,
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 *ptr++ = i % 256;
19 exit(0);
20 }
10-15 Объект разделяемой памяти открывается вызовом shm_open. Его размер мы узнаем с помощью fstat. Затем файл отображается в память вызовом mmap, после чего его дескриптор может быть закрыт.
16-18 Последовательность записывается в разделяемую память.
- Программа shmget
- Программа shmunlink
- Программа shmread
- Программа shmrmid
- Программа «Тайный покупатель»
- Программа Victoria
- Подпрограмма обработки прерывания
- Магическая программа, или Беспорядок по расписанию
- Что делать, если вместо русских букв в программах – непонятные символы?
- Как называется программа, которая устанавливает Windows за 5 минут?