на главную | войти | регистрация | 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
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


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



Листинг 13.7. Программа, увеличивающая значение счетчика в разделяемой памяти

//pxshm/client1.c

1  #include "unpipc.h"


2  struct shmstruct { /* структура, помещаемая в разделяемую память */

3   int count;

4  };

5  sem_t *mutex; /* указатель на именованный семафор */


6  int

7  main(int argc, char **argv)

8  {

9   int fd, i, nloop;

10  pid_t pid;

11  struct shmstruct *ptr;

12  if (argc != 4)

13   err_quit("usage: client1 <#loops>");

14  nloop = atoi(argv[3]);

15  fd = Shm_open(Px_ipc_name(argv[1]), O_RDWR, FILE_MODE);

16  ptr = Mmap(NULL, sizeof(struct shmstruct), PROT_READ | PROT_WRITE,

17   MAP_SHARED, fd, 0);

18  Close(fd);

19  mutex = Sem_open(Px_ipc_name(argv[2]), 0);

20  pid = getpid();

21  for (i = 0; i < nloop; i++) {

22   Sem_wait(mutex);

23   printf("pid %ld: %d\n", (long) pid, ptr->count++);

24   Sem_post(mutex);

25  }

26  exit(0);

27 }


Завершение работы процесса | UNIX: взаимодействие процессов | Открытие области разделяемойпамяти