Logo GBNhost.com — скидка на VPS сервера 50 процентов! Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Хостинг в Европе для новичков (от 25 руб/мес) и VIP-хостинг для профессионалов (от 1000 руб/мес)

Скидка 25% на все тарифы хостинга по промокоду STDCITF

Бесплатно: тест на 30 дней!

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

Ваш идеальный сервер от 4$/мес. Все включено:

- Администрирование и решение проблем 24/7
- Перенос проектов без рисков и простоев.
- Круглосуточный мониторинг доступности сайтов.
- Защита от DDoS атак.

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

SEMCTL(2)

НАЗВАНИЕ
semctl - операции управления семафорами

СИНТАКСИС


        #include <sys/types.h>

        #include <sys/ipc.h>

        #include <sys/sem.h>

        

        int semctl (semid, semnum, cmd, arg)

        int semid, cmd;

        int semnum;

        union semun {

          int val;

          struct semid_ds *buf;

          ushort *array;

        } arg;

ОПИСАНИЕ
Системный вызов semctl позволяет выполнять операции управления семафорами. Семафоры задаются аргументами semid и semnum. Операция определяется значением аргумента cmd, которое должно быть одним из следующих:

GETVAL
Получить значение семафора semval [см. intro(2)]. {Требуется право на чтение.}
SETVAL
Установить значение семафора semval равным arg.val. {Требуется право на изменение.} После успешного выполнения этой команды значение semadj, соответствующее заданному семафору во всех процессах, устанавливается равным 0.
GETPID
Получить значение sempid. {Требуется право на чтение.}
GETNCNT
Получить значение semncnt. {Требуется право на чтение.}
GETZCNT
Получить значение semzcnt. {Требуется право на чтение.}

Следующие команды cmd читают и устанавливают значение каждого семафора в множестве семафоров:

GETALL
Прочитать значения семафоров в массив, на который указывает arg.array. {Требуется право на чтение.}
SETALL
Установить значения семафоров равными значениям элементов массива, на который указывает arg.array. {Требуется право на изменение.} После успешного выполнения этой команды значения semadj, соответствующие заданным семафорам во всех процессах, устанавливаются равными 0.

Предоставляются также следующие команды:

IPC_STAT
Поместить текущее значение каждого поля структуры данных, ассоциированной с идентификатором semid, в структуру, на которую указывает arg.buf. Содержимое этой структуры определяется в intro(2). {Требуется право на чтение.}
IPC_SET
Присвоить следующим полям структуры данных, ассоциированной с идентификатором semid, соответствующие значения, находящиеся в структуре, на которую указывает arg.buf:

   sem_perm.uid

   sem_perm.gid

   sem_perm.mode  /* Только младшие 9 бит */

Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля sem_perm.cuid или sem_perm.uid в структуре данных, ассоциированной с идентификатором semid.
IPC_RMID
Удалить из системы идентификатор семафора, определяемый значением semid, ликвидировать множество семафоров и ассоциированную с ним структуру данных. Эта команда может выполняться только процессом, который имеет действующий идентификатор пользователя, равный либо идентификатору суперпользователя, либо значению поля sem_perm.cuid или sem_perm.uid в структуре данных, ассоциированной с идентификатором semid.

Системный вызов semctl завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EINVAL]
Значение аргумента semid не является корректным идентификатором множества семафоров.
[EINVAL]
Номер семафора semnum меньше 0 или превышает значение sem_nsems.
[EINVAL]
Некорректное значение аргумента cmd, определяющее команду.
[EACCES]
Нет прав на выполнение операции у вызывающего процесса.
[ERANGE]
Значение аргумента cmd равно SETVAL или SETALL и значение, которое присваивается семафору, больше максимально допустимого в системе.
[EPERM]
Значение аргумента cmd равно IPC_RMID или IPC_SET и действующий идентификатор пользователя вызывающего процесса не равен ни идентификатору суперпользователя, ни значению поля sem_perm.cuid или sem_perm.uid в структуре данных, ассоциированной с идентификатором semid.
[EFAULT]
Значение arg.buf указывает за пределы отведенного процессу адресного пространства.

СМ. ТАКЖЕ
intro(2), semget(2), semop(2).

ДИАГНОСТИКА
При успешном завершении системного вызова возвращаются следующие значения, в зависимости от команды cmd:
GETVALЗначение семафора semval.
GETPIDИдентификатор процесса sempid.
GETNCNTЗначение semncnt.
GETZCNTЗначение semzcnt.

Результат успешного выполнения остальных операций равен 0.

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

Сверхбыстрый хостинг от 69 р./мес., VPS от 299 р./мес.

Бесплатно: администрирование + ISPmanager + DDoS защита + SSL + 7 дней тестовый период

Скидка 50% на первый месяц VPS и хостинга по промокоду CITFORUM

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...