Книга: UNIX: взаимодействие процессов
Программа semgetvalues
Разделы на этой странице:
Программа semgetvalues
В листинге 11.4 приведен текст программы semgetvalues, которая получает и выводит значения всех семафоров набора.
Получение количества семафоров в наборе
11-15 После получения идентификатора семафора с помощью semget мы вызываем semctl с командой IPC_STAT для получения значений полей структуры semi d_ds данного семафора. Поле sem_nsems содержит нужную нам информацию о количестве семафоров в наборе.
Получение всех значений
16-22 Мы выделяем память под массив беззнаковых коротких целых, по одному элементу на каждый семафор набора. Вызов semctl с командой GETALL позволяет получить все значения семафоров набора одновременно. Каждое значение выводится.
Листинг 11.4. Программа semgetvalues
//svsem/semgetvalues.c
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: semgetvalues <pathname>");
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 ptr = Calloc(nsems, sizeof(unsigned short));
18 arg.array = ptr;
19 /* получаем и выводим значения семафоров */
20 Semctl(semid, 0, GETALL, arg);
21 for (i = 0; i < nsems; i++)
22 printf("semval[%d] = %dn", i, ptr[i]);
23 exit(0);
24 }
- Программа semcreate
- Программа semrmid
- Программа «Тайный покупатель»
- Программа Victoria
- Подпрограмма обработки прерывания
- Магическая программа, или Беспорядок по расписанию
- Что делать, если вместо русских букв в программах – непонятные символы?
- Как называется программа, которая устанавливает Windows за 5 минут?
- Программа shmget
- Какая программа позволяет создавать документы формата PDF?
- Удаляю Windows Messenger из автозапуска, но после перезагрузки программа снова запускается. С другими приложениями таког...
- При установке Windows ХР с загрузочного диска после тестирования программа установки сообщает, что не найден ни один жес...