Книга: Программирование для 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}
}

Оглавление книги


Генерация: 1.742. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз