Листинг 10.23. Функция sem_close
//my_pxsem_fifo/sem_close.с
1 #include "unpipc.h"
2 #include "semaphore.h"
3 int
4 mysem_close(mysem_t *sem)
5 {
6 if (sem->sem_magic != SEM_MAGIC) {
7 errno = EINVAL;
8 return(-1);
9 }
10 sem->sem_magic = 0; /* чтобы семафор нельзя было больше использовать */
11 if (close(sem->sem_fd[0]) == –1 || close(sem->sem_fd[1]) == –1) {
12 free(sem);
13 return(-1);
14 }
15 free(sem);
16 return(0);
17 }