.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sem_open 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ sem_open \- инициализирует и открывает именованный семафор .SH LIBRARY POSIX threads library (\fIlibpthread\fP, \fI\-lpthread\fP) .SH СИНТАКСИС .nf \fB#include \fP /* константы O_* */ \fB#include \fP /* константы для mode */ \fB#include \fP .PP \fBsem_t *sem_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB);\fP \fBsem_t *sem_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB,\fP \fB mode_t \fP\fImode\fP\fB, unsigned int \fP\fIvalue\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBsem_open\fP() создаёт новый семафор POSIX или открывает существующий семафор. Семафору присваивается имя \fIname\fP. Подробней об устройстве \fIname\fP смотрите \fBsem_overview\fP(7). .PP .\" In reality the filesystem IDs are used on Linux. В аргументе \fIoflag\fP задаются флаги, которые управляют работой вызова (определения значений флагов можно получить включив \fI\fP). Если в \fIoflag\fP указано \fBO_CREAT\fP, то семафор создаётся, если ещё не существует. Владельцем (ID пользователя) семафора устанавливается эффективный ID пользователя вызывающего процесса. Владельцем группы (ID группы) устанавливается эффективный ID группы вызывающего процесса. Если в \fIoflag\fP указаны \fBO_CREAT\fP и \fBO_EXCL\fP одновременно и семафор с заданным \fIname\fP уже существует, то возвращается ошибка. .PP Если в \fIoflag\fP указано \fBO_CREAT\fP, то должны быть заданы ещё два аргумента. В аргументе \fImode\fP задаются права для нового семафора, подобно \fBopen\fP(2) (символические определения бит прав можно получить включив \fI\fP). Настройки прав маскируются маской процесса. Права чтения и записи должны быть заданы для каждого класса пользователей, которым нужен доступ к семафору. В аргументе \fIvalue\fP задаётся начальное значение нового семафора. Если указан \fBO_CREAT\fP и семафор с заданным \fIname\fP существует, то \fImode\fP и \fIvalue\fP игнорируются. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBsem_open\fP() возвращает адрес нового семафора; этот адрес используется при вызове других функций, работающих с семафорами. При ошибке \fBsem_open\fP() возвращает \fBSEM_FAILED\fP, а в \fIerrno\fP записывается номер ошибки. .SH ОШИБКИ .TP \fBEACCES\fP Семафор существует, но вызывающий не имеет прав для его открытия. .TP \fBEEXIST\fP В \fIoflag\fP указаны \fBO_CREAT\fP и \fBO_EXCL\fP, но семафор \fIname\fP уже существует. .TP \fBEINVAL\fP Значение \fIvalue\fP было больше \fBSEM_VALUE_MAX\fP. .TP \fBEINVAL\fP В \fIname\fP есть только «/», и нет других символов. .TP \fBEMFILE\fP Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс. .TP \fBENAMETOOLONG\fP Слишком длинное значение аргумента \fIname\fP. .TP \fBENFILE\fP Достигнуто максимальное количество открытых файлов в системе. .TP \fBENOENT\fP .\" this error can occur if we have a name of the (nonportable) form .\" /dir/name, and the directory /dev/shm/dir does not exist. В \fIoflag\fP не указан \fBO_CREAT\fP и семафор \fIname\fP не существует; или указан \fBO_CREAT\fP, но \fIname\fP указан в некорректной форме. .TP \fBENOMEM\fP Недостаточно памяти. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBsem_open\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SH "СМ. ТАКЖЕ" \fBsem_close\fP(3), \fBsem_getvalue\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .