The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа
next up previous contents index
Next: Программа-пример Up: Операции над множествами семафоров Previous: Операции над множествами семафоров   Contents   Index

Использование semop

В справочной статье semop синтаксис данного системного вызова описан так:

        #include <sys/types.h>
        #include <sys/ipc.h>
        #include <sys/sem.h>

        int semop (semid, sops, nsops)
        int semid;
        struct sembuf *sops;
        unsigned nsops;
При успешном завершении результат системного вызова равен нулю; в случае неудачи возвращается -1.

В качестве аргумента semid должен выступать идентификатор множества семафоров, предварительно полученный при помощи системного вызова semget.

Аргумент sops (массив структур) определяет, над какими семафорами будут выполняться операции и какие именно. Структура, описывающая операцию над одним семафором, определяется следующим образом:

        struct sembuf {
          short sem_num; /* Номер семафора */
          short sem_op;  /* Операция над семафором */
          short sem_flg; /* Флаги операции */
        };
(см. включаемый файл <sys/sem.h>).

Номер семафора задает конкретный семафор в множестве, над которым должна быть выполнена операция.

Выполняемая операция определяется следующим образом:

Допустимые значения флагов операций (поле sem_flg):
IPC_NOWAIT

Если какая-либо операция, для которой задан флаг IPC_NOWAIT, не может быть успешно выполнена, системный вызов завершается неудачей, причем ни у одного из семафоров не будет изменено значение

SEM\_UNDO

Данный флаг задает проверочный режим выполнения операции; он предписывает аннулировать ее результат даже в случае успешного завершения системного вызова semop. Иными словами, блокировка всех операций (в том числе и тех, для которых задан флаг SEM_UNDO) выполняется обычным образом, но когда наконец все операции могут быть успешно выполнены, операции с флагом SEM_UNDO игнорируются.

Аргумент nsops специфицирует число структур в массиве. Макси- мально допустимый размер массива определяется системным пара- метром SEMOPM, то есть в каждом системном вызове semop можно выполнить не более SEMOPM операций.



Alex Otwagin 2002-12-16


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor