[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Инициализировать и удалить семафор - Пример
Это тот же пример, что и выше, но здесь показан код для
инициализации семафора и его удаления. Этот фрагмент программы
работает так:
32-37 Если эта программа создала набор семафоров,
инициализировать его в 1. Как правило, набор семафоров
должен быть удален перед выходом из программы, если его
инициализация не удалась, но это здесь не показано.
54-60 Только создатель набора семафоров может удалить его.
Обратите внимание на использование "пустых" аргументов в
тех местах, где соответствующие параметры системных
вызовов не используются. Функция sleep(3C) задерживает
удаление семафора на 5 секунд, так что другая программа
может продолжать работу с ним.
Файл: semdemo.c
ИНИЦИАЛИЗИРОВАТЬ И УДАЛИТЬ СЕМАФОР - ПРИМЕР
1 #include <unistd.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/ipc.h>
5 #include <sys/sem.h>
6 #include <stdio.h>
7 #define DUMMY 0
8 #define COUNT 4
9
10 main(int argc, char *argv[])
11 {
...
32 if (creator) {/* initialize semaphore */
33 if (semctl(semid, 0, SETVAL, 1) == -1) {
34 perror(argv[0]);
35 exit(2);
36 }
37 }
...
54 if (creator) {
55 sleep(5);
56 if(semctl(semid,DUMMY,IPC_RMID,DUMMY) == -1) {
57 perror(argv[0]);
58 exit(5);
59 }
60 }
61 return(0);
62 }