[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Руководство по IPC

В  разделах   системного  руководства   (программа  man)   описываются
системные вызовы трех типов: get, ctl и op.

get: Для каждого  типа средств  IPC в  операционной системе существует
     отдельная таблица  дескрипторов. Системные  вызовы семейства  get
     (semget, shmget  и msgget)  используются для  выделения индекса в
     соответствующей таблице. Они возвращают идентификатор, основанный
     на индексе дескриптора в таблице. Этот идентификатор используется
     большинством остальных вызовов, работающих с данным средством.

     Системные вызовы get аналогичны open(2). Как и open(2), get может
     быть использован  для получения  доступа к существующему средству
     или для  создания нового.  Если вы  создаете новое  средство,  вы
     должны задать права доступа, похожие на файловые. Так же как файл
     имеет хозяина  и группу,  средство IPC  имеет создателя,  хозяина
     (обычно совпадает  с создателем)  и их  идентификаторы групп. id,
     возвращаемый вызовом  get, похож  на дескриптор  открытого файла.
     Однако,  в  отличие  от  файлового  дескриптора,  этот  id  может
     принимать большие значения.

ctl: Системные вызовы  семейства ctl (semctl, shmctl и msgctl) имеют в
     качестве  параметра  командное  слово,  которое  задает  одну  из
     следующих функций:

     . получение  информации  о  состоянии  средства.  Это  похоже  на
       stat(2) для файла.

     . изменение информации,  например   хозяина, группы,  доступа или
       других данных, относящихся к этому средству.

       Эти атрибуты  устанавливаются  во  время  вызова  get  и  могут
       изменяться позднее  вызовами  семейства  ctl.  Изменения  может
       делать  только   хозяин  средства  или  суперпользователь.  Эта
       функция напоминает chown(2) и chmod(2).

     . удаление средства.

       Удаление  обычно   делается,  когда  ни  одному  из  процессов,
       использовавших это  средство, оно  больше  не  нужно.  Удаление
       средства должно  производиться процессом  с тем  же эффективным
       идентификатором пользователя,  что и  у хозяина  средства. Если
       средство не  удалено, оно  будет существовать  до  перезагрузки
       системы, уменьшая тем самым доступное количество ресурсов этого
       типа. Команда  ipcrm(1), обсуждаемая ниже, может использоваться
       для удаления  средства, если оно не было удалено использовавшей
       его программой. Удаление похоже на unlink(2) для файла.

op:  Справочное руководство  системного программиста  ОС UNIX содержит
     разделы для  semop, shmop и msgop. Существует системный вызов под
     названием semop(2),  но вызовов  с именами  shmop и  msgop нет. В
     разделе shmop(2)  описаны shmat(2)  и shmdt(2).  Раздел  msgop(2)
     содержит  msgsnd(2)  и  msgrcv(2).  Вызовы  семейства  op  служат
     собственно для  передачи данных между процессами. Для семафоров и
     очередей  сообщений,   op  напоминает  read(2)  и  write(2).  Для
     разделяемой памяти  shmat(2)  похожа  на  open(2)  для  файла,  а
     shmdt(2) - на close(2).
                      РАЗДЕЛЫ РУКОВОДСТВА ПО IPC

sem                         - используется для создания средства IPC,
                            возвращает идентификатор средства.
shm       get(2)

msg



sem                         - Определяет состояние, устанавливает
                            различные опции и права доступа или
shm                         удаляет идентификатор IPC ( и само
          ctl(2)            средство)
msg


sem
                            - выполняет операции над идентификатором
shm                         IPC
          op(2)
msg