Книга: UNIX: взаимодействие процессов
Функция sem_unlink
Разделы на этой странице:
Функция sem_unlink
Функция sem_unlink, текст которой приведен в листинге 10.40, удаляет вспомогательный файл и семафор System V, связанные с указанным ей семафором Posix.
Листинг 10.40. Функция sem_unlink
//my_pxsem_svsem/sem_unlink.с
1 #include "unpipc.h"
2 #include "semaphore.h"
3 int
4 mysem_unlink(const char *pathname)
5 {
6 int semid;
7 key_t key;
8 if ((key = ftok(pathname, 0)) == (key_t) –1)
9 return(-1);
10 if (unlink(pathname) == –1)
11 return(-1);
12 if ((semid = semget(key, 1, SVSEM_MODE)) == –1)
13 return(-1);
14 if (semctl(semid, 0, IPC_RMID) == –1)
15 return(-1);
16 return(0);
17 }
Получение ключа System V по полному имени
8-16 Функция ftok преобразует полное имя файла в ключ System V IPC. После этого вспомогательный файл удаляется вызовом unlink (именно в этом месте кода, на тот случай, если одна из последующих функций вернет ошибку). Затем мы открываем семафор System V вызовом semget и удаляем его с помощью команды IPC_RMID для semctl.
- 13.2. Функции shm_open и shm_unlink
- Функция sem_open
- Функция sem_wait
- Функция sem_post
- Функция sem_close
- 10.2. Функции sem_open, sem_close и sem_unlink
- 5.2. Функции mq_open, mq_close, mq_unlink
- 10.3. Функции sem_wait и sem_trywait
- 2.1.3. Функция getopt_long()
- Группировка по встроенным функциям и UDF
- SEMAPHORE COUNT