Функция 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.

Данный текст является ознакомительным фрагментом.