semctl (2)
   управляющие операции над семафорами  

Синтаксис
 
    # include <sys/types.h>
    # include <sys/ipc.h>
    # include <sys/sem.h>

    #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
    /* union semun определен включением  */
    #else
    /* в соответствии с X/OPEN мы должны определить его сами */
    union semun {
            int val;                    /* значение для SETVAL */
            struct semid_ds *buf;       /* буфер для IPC_STAT, IPC_SET */
            unsigned short int *array;  /* массив для GETALL, SETALL */
            struct seminfo *__buf;      /* буфер для IPC_INFO */
    };
    #endif

    int semctl  (int  semid, int semnum, int cmd, union semun
       arg)    

Описание
  semctl выполняет управляющие операции над семафорами. Семафор задается аргументами semid - идентификатор массива семафоров и semnum - номер семафора в массиве (нумерация начинается с 0). Выполняемая операция задается аргументом cmd. Аргумент arg служит для передачи параметров операции.

Операции, выполняемые системным вызовом semctl, следующие:
 IPC_STAT  Копировать информацию из структуры данных массива семафоров в структуру, на которую указывает arg.buf.
 IPC_SET  Присвоить следующим полям структуры данных массива семафоров соответствующие значения, находящиеся в структуре, на которую указывает arg.buf:
   sem_perm.uid
   sem_perm.gid
   sem_perm.mode  /* Только младшие 9 бит */
 IPC_RMID  Удалить массив семафоров.
 GETVAL  Получить значение определенного семафора.
 SETVAL  Установить значение определенного семафора. Значение задается в arg.buf.
 GETALL  Получить значения всех семафоров массива в arg.buf. Аргумент semnum игнорируется
 SETALL  Установить значения всех семафоров массива. Значения задаются в arg.buf. Аргумент semnum игнорируется
 GETNCNT  Получить значение числа процессов, ожидающих, увеличения значения определенного семафора.
 GETZNCNT  Получить значение числа процессов, ожидающих, когда значение определенного семафора станет 0.
 GETPID  Получить значение идентификатора определенного семафора.

Возвращаемое значение
  В случае ошибки возвращается -1 и устанавливается код ошибки d errno.

При успешном завершении возвращается:
 GETVAL  значение семафора
 GETVAL  идентификатор семафора
 GETNCNT  число процессов
 GETZCNT  число процессов

См.также
  semget, semop.


Список системных вызовов