Стивенс Уильям Ричард
Шрифт:
Программа semops
В листинге 11.5 приведен текст программы semops, позволяющей выполнять последовательность действий над набором семафоров.
7-19 Параметр –n соответствует установленному флагу IPC_NOWAIT для каждой операции, а параметр –u аналогичным образом позволяет указать для каждой операции флаг SEM_UNDO. Обратите внимание, что функция semop позволяет указывать свой набор флагов для каждого элемента структуры sembuf (то есть для каждой из операций в отдельности), но для простоты мы в нашей программе задаем одинаковые флаги для всех операций.
20-29 После открытия семафора вызовом semget мы выделяем память под массив структур sembuf, по одному элементу на каждую операцию из командной строки. В отличие от предыдущих двух программ эта позволяет пользователю задать меньше команд, чем имеется семафоров в наборе.
30 Вызов semop выполняет последовательность операций над семафорами набора.
Примеры
Теперь мы продемонстрируем работу пяти приведенных выше программ и исследуем некоторые свойства семафоров System V: