| |
В справочной статье 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>).
Номер семафора задает конкретный семафор в множестве, над которым должна быть выполнена операция.
Выполняемая операция определяется следующим образом:
IPC_NOWAIT
Если какая-либо операция, для которой задан флаг IPC_NOWAIT, не может быть успешно выполнена, системный вызов завершается неудачей, причем ни у одного из семафоров не будет изменено значение
SEM\_UNDO
Данный флаг задает проверочный режим выполнения операции; он предписывает аннулировать ее результат даже в случае успешного завершения системного вызова semop. Иными словами, блокировка всех операций (в том числе и тех, для которых задан флаг SEM_UNDO) выполняется обычным образом, но когда наконец все операции могут быть успешно выполнены, операции с флагом SEM_UNDO игнорируются.
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |