Системное программирование в UNIX средствами Free Pascal


         

Из определения видно, что функция


uses ipc;
Function semctl(semid:longint; sem_num:longint; command:longint;
                var ctl_arg:tsemun):longint;
Из определения видно, что функция semctl намного сложнее, чем msgctl. Параметр semid должен быть допустимым идентификатором семафора, возвращенным вызовом semget. Параметр command имеет тот же смысл, что и в вызове msgctl,
– задает требуемую команду. Команды распадаются на три категории: стандартные команды управления средством межпроцессного взаимодействия (такие как IPC_STAT); команды, которые воздействуют только на один семафор; и команды, действующие на весь набор семафоров. Все доступные команды приведены в табл. 8.1.
Таблица 8.1. Коды функций вызова semctl
Стандартные функции межпроцессного взаимодействия
IPC_STAT        Поместить информацию о статусе в поле ctl_arg.stat
IPC_SET          Установить данные о владельце/правах доступа
IPC_RMID        Удалить набор семафоров из системы
Операции над одиночными семафорами
(относятся к семафору sem_num, значение возвращается вызовом semctl)
GETVAL            Вернуть значение семафора (то есть setval)
SETVAL            Установить значение семафора равным ctl_arg.val
GETPID            Вернуть значение sempid
GETNCNT          Вернуть semncnt (см. выше)
GETZCNT          Вернуть semzcnt (см. выше)
Операции над всеми семафорами
GETALL            Поместить все значения setval в массив ctl_arg.array
SETALL            Установить все значения setval из массива ctl_arg.array
Параметр sem_num используется со второй группой возможных операций вызова semctl для задания определенного семафора. Последний параметр ctl_arg является объединением
(записью с вариантами), определенным следующим образом:
PSEMun = ^TSEMun;
TSEMun = record
  case longint of
    0 : (val    : longint);
    1 : (buf    : PSEMid_ds);
    2 : (arr    : PWord);
    3 : (padbuf : PSeminfo);
    4 : (padpad : pointer);
  end;
Каждый элемент объединения представляет некоторый тип значения, передаваемого вызову semctl при выполнении определенной команды. Например, если значение command равно SETVAL, то будет использоваться элемент ctl_arg.val.

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий