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


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



Листинг 11.3. Программа semsetvalues

//svsem/semsetvalues.с

1  #include "unpipc.h"


2  int

3  main(int argc, char **argv)

4  {

5   int semid, nsems, i;

6   struct semid_ds seminfo;

7   unsigned short *ptr;

8   union semun arg;

9   if (argc < 2)

10   err_quit("usage: semsetvalues [ values … ]");

11  /* получение количества семафоров в наборе */

12  semid = Semget(Ftok(argv[1], 0), 0, 0);

13  arg.buf = &seminfo;

14  Semctl(semid, 0, IPC_STAT, arg);

15  nsems = arg.buf->sem_nsems;

16  /* получение значений из командной строки */

17  if (argc != nsems + 2)

18  err_quit("%d semaphores in set, %d values specified", nsems, argc-2);

19  /* выделение памяти под значения семафоров набора, помещение этих значений в новый массив */

20  ptr = Calloc(nsems, sizeof(unsigned short));

21  arg.array = ptr;

22  for (i = 0; i < nsems; i++)

23   ptr[i] = atoi(argv[i +2]);

24  Semctl(semid, 0, SETALL, arg);

25  exit(0);

26 }


Установка всех значений | UNIX: взаимодействие процессов | Программа semgetvalues