Книга: Программирование для Linux. Профессиональный подход
Листинг 5.2. (sem_all_deall.c) Выделение и освобождение двоичного семафора
Листинг 5.2. (sem_all_deall.c) Выделение и освобождение двоичного семафора
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/types.h>
/* Тип union semun необходимо определить самостоятельно. */
union semun {
int val;
struct semid_ds *buf;
unsigned short int* array;
struct seminfo *__buf;
};
/* Получаем идентификатор семафора и создаем семафор,
если идентификатор оказывается уникальным. */
int binary_semaphore_allocation(key_t key, int sem_flags) {
return semget(key, 1, sem_flags);
}
/* Освобождаем семафор, подразумевая, что пользователи
больше не работают с ним. В случае ошибки
возвращается -1. */
int binary_semaphore_deallocate(int semid) {
union semun ignored_argument;
return semctl(semid, 1, IPC_RMID, ignored_argument}
}
Оглавление статьи/книги
Похожие страницы
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- SEMAPHORE COUNT
- Chapter 5 Installing and Configuring VirtualCenter 2.0
- Chapter 13. rc.firewall file
- 3.2.1.2. Начальное выделение памяти: malloc()
- Installation on Red Hat 7.1
- example rc.firewall
- explanation of rc.firewall
- rc.firewall.txt script structure
- rc.firewall.txt
- rc.DMZ.firewall.txt
- rc.DHCP.firewall.txt