на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Листинг 14.3. Заполнение сегмента разделяемой памяти последовательностью чисел

//svshm/shmwrite.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 *ptr;

8   if (argc != 2)

9    err_quit("usage: shmwrite ");

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   *ptr++ = i % 256;

16  exit(0);

17 }

10-12 Сегмент разделяемой памяти открывается вызовом shmget и подключается вызовом shmat. Его размер может быть получен вызовом shmctl с командой IPC_STAT.

13-15 В разделяемую память записывается последовательность значений.


Программа shmwrite | UNIX: взаимодействие процессов | Программа shmread