Man page - sem_open(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

sem_open

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

sem_open - инициализирует и открывает именованный семафор

БИБЛИОТЕКА

Библиотека потоков POSIX ( libpthread , -lpthread )

ОБЗОР

#include <fcntl.h> /* константы O_* */
#include <sys/stat.h>
/* константы для mode */
#include <semaphore.h>

sem_t *sem_open(const char * name , int oflag );
sem_t *sem_open(const char *
name , int oflag ,
mode_t
mode , unsigned int value );

ОПИСАНИЕ

Функция sem_open () создаёт новый семафор POSIX или открывает существующий семафор. Семафору присваивается имя name . Подробней об устройстве name смотрите sem_overview (7).

В аргументе oflag задаются флаги, которые управляют работой вызова (определения значений флагов можно получить включив <fcntl.h> ). Если в oflag указано O_CREAT , то семафор создаётся, если ещё не существует. Владельцем (ID пользователя) семафора устанавливается эффективный ID пользователя вызывающего процесса. Владельцем группы (ID группы) устанавливается эффективный ID группы вызывающего процесса. Если в oflag указаны O_CREAT и O_EXCL одновременно и семафор с заданным name уже существует, то возвращается ошибка.

Если в oflag указано O_CREAT , то должны быть заданы ещё два аргумента. В аргументе mode задаются права для нового семафора, подобно open (2) (символические определения бит прав можно получить включив <sys/stat.h> ). Настройки прав маскируются маской процесса. Права чтения и записи должны быть заданы для каждого класса пользователей, которым нужен доступ к семафору. В аргументе value задаётся начальное значение нового семафора. Если указан O_CREAT и семафор с заданным name существует, то mode и value игнорируются.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении sem_open () возвращает адрес нового семафора; этот адрес используется при вызове других функций, работающих с семафорами. При ошибке sem_open () возвращает SEM_FAILED , а в errno записывается номер ошибки.

ОШИБКИ

EACCES

Семафор существует, но вызывающий не имеет прав для его открытия.

EEXIST

В oflag указаны O_CREAT и O_EXCL , но семафор name уже существует.

EINVAL

Значение value было больше SEM_VALUE_MAX .

EINVAL

В name есть только «/», и нет других символов.

EMFILE

Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс.

ENAMETOOLONG

Слишком длинное значение аргумента name .

ENFILE

Достигнуто максимальное количество открытых файлов в системе.

ENOENT

В oflag не указан O_CREAT и семафор name не существует; или указан O_CREAT , но name указан в некорректной форме.

ENOMEM

Недостаточно памяти.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes (7).

Image grohtml-620151-1.png

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001.

СМОТРИТЕ ТАКЖЕ

sem_close (3), sem_getvalue (3), sem_post (3), sem_unlink (3), sem_wait (3), sem_overview (7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .