Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       sem_init - инициализирует безымянный семафор

LIBRARY

       POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

       #include <semaphore.h>

       int sem_init(sem_t *sem, int pshared, unsigned int value);

ОПИСАНИЕ

       Функция  sem_init()  инициализирует  безымянный  семафор  по  адресу,  указанному в sem. В
       аргументе value задаётся начальное значение семафора.

       Аргументом pshared определяется, будет ли данный семафор доступен в нитях процесса  или  в
       разных процессах.

       Если  значение  pshared  равно  0,  то  семафор  будет  коллективно использоваться в нитях
       процесса, и должен располагаться по адресу, который  доступен  из  всех  нитей  (например,
       глобальная переменная или динамически выделенная из кучи переменная).

       Если  значение  pshared  не  равно  нулю,  то  семафор  будет  коллективно  использоваться
       несколькими  процессами,  и  должен  располагаться  в  области  общей   памяти   (смотрите
       shm_open(3),  mmap(2)  и  shmget(2))  (так  как  потомок,  создаваемый  fork(2), наследует
       отображение памяти родителя, то ему также доступен  и  семафор).  Любой  процесс,  имеющий
       доступ  к  области  общей  памяти,  может  обращаться  к  семафору  с помощью sem_post(3),
       sem_wait(3) и т. п. функций.

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

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

       При  успешном  выполнении sem_init() возвращается 0; при ошибке возвращается -1, а в errno
       содержится код ошибки.

ОШИБКИ

       EINVAL Значение value превышает SEM_VALUE_MAX.

       ENOSYS Значение pshared не равно нулю, то система не  поддерживает  семафоры,  коллективно
              используемые процессами (смотрите sem_overview(7)).

АТРИБУТЫ

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

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │sem_init()                                             │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2001.

ЗАМЕЧАНИЯ

       Странно,  но  в  POSIX.1-2001  не  определено  значение,  которое  должно возвращаться при
       успешном выполнении  вызова  sem_init().  В  POSIX.1-2008  это  исправлено:  при  успешном
       выполнении должен возвращаться ноль.

ПРИМЕРЫ

       See shm_open(3)  and sem_wait(3).

СМ. ТАКЖЕ

       sem_destroy(3), sem_post(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>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.