Книга: 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.

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


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