CREATSEM(3)
XENIX System V (21 èþíÿ 1987)

ÈÌß
creatsem - coçäaeò äâoè÷íûé ceìaôop

ÑÈÍÒÀÊÑÈÑ


	int creatsem (sem_name, mode)

	char *sem_name;

	int mode;

ÎÏÈÑÀÍÈÅ
creatsem oïpeäeëÿeò äâoè÷íûé ceìaôop c èìeíeì sem_name; paáoòa c ceìaôopoì áyäeò ocyùecòâëÿòücÿ ôyíêöèÿìè waitsem(3) è sigsem(3) äëÿ ïoääepæêè ècêëþ÷èòeëüíoão äocòyïa ê pecypcaì, paçäeëÿeìûì ïepeìeííûì èëè êpèòè÷ecêèì y÷acòêaì ïpoãpaìì. creatsem âoçâpaùaeò yíèêaëüíûé íoìep ceìaôopa, sem_num, êoòopûé çaòeì ècïoëüçyeòcÿ â oïepaöèÿx waitsem è sigsem. Ceìaôopû c÷èòaþòcÿ cïeöèaëüíûìè ôaéëaìè c íyëeâoé äëèíoé. Ïpocòpaícòâo, ïpeäíaçía÷eííoe äëÿ èìeíè ôaéëa, ècïoëüçyeòcÿ äëÿ xpaíeíèÿ yíèêaëüíoão èäeíòèôèêaòopa ceìaôopa. mode çaäaeò äocòyï ê ceìaôopy òaê æe, êaê ê oáû÷íoìy ôaéëy. Äocòyï ê ceìaôopy paçpeøeí ía ocíoâaíèè áèòa paçpeøeíèÿ ÷òeíèÿ; paçpeøeíèe çaïècè è âûïoëíeíèÿ èãíopèpyeòcÿ.

C ceìaôopoì ìoæío paáoòaòü ïpèìèòèâaìè cèíxpoííoão xapaêòepa, òaêèìè êaê waitsem è sigsem. creatsem ycòaíaâëèâaeò ceìaôop â íeêoòopoe ía÷aëüíoe çía÷eíèe, opensem oòêpûâaeò ceìaôop äëÿ ècïoëüçoâaíèÿ eão ïpoöeccoì. Cèíxpoííocòü paáoòû c ceìaôopoì ãapaíòèpyeò íeäeëèìocòü (íeïpepûâaeìocòü) ceìaôopíûx oïepaöèé. Ýòè ïpèìèòèâû ècïoëüçyþòcÿ ïpèìeíèòeëüío ê ceìaôopaì, êoòopûe câÿçûâaþòcÿ c êaæäûì pecypcoì (âêëþ÷aÿ êpèòè÷ecêèe y÷acòêè ïpoãpaìì) äëÿ eão çaùèòû.

Ïpoöecc, yïpaâëÿþùèé ceìaôopoì, äoëæeí âûïoëíèòü:


	sem_num = creatsem ("semaphore", mode);

äëÿ coçäaíèÿ, èíèöèaëèçaöèè è oòêpûòèÿ ceìaôopa ýòèì ïpoöeccoì. Bce äpyãèe ïpoöeccû, ècïoëüçyþùèe ceìaôop, äoëæíû âûïoëíèòü:


	sem_num = opensem ("semaphore");

äëÿ ïoëy÷eíèÿ äocòyïa ê eão çía÷eíèþ. Çaìeòèì, ÷òo ïpoöecc íe ìoæeò oòêpûòü è ècïoëüçoâaòü ceìaôop, êoòopûé íe èíèöèaëèçèpoâaí âûçoâoì creatsem. Ïpoöecc íe ìoæeò oòêpûòü ceìaôop áoëee oäíoão paça â òe÷eíèe oäíoão ïepèoäa paáoòû. Kaê coçäaþùèé, òaê è oòêpûâaþùèé ïpoöeccû ècïoëüçyþò waitsem è sigsem äëÿ paáoòû c ceìaôopoì sem_num.

COÂÌECÒÈÌOCÒÜ
creatsem ìoæeò áûòü ècïoëüçoâaí äëÿ oïpeäeëeíèÿ ceìaôopoâ XENIX, âepcèè 3, ío íe ceìaôopoâ XENIX System V.

ÑÌ. ÒÀÊÆÅ
opensem(3), waitsem(3), sigsem(3)

ÄÈÀÃÍÎÑÒÈÊÀ
creatsem âoçâpaùaeò çía÷eíèe -1 â cëy÷ae oáíapyæeíèÿ oøèáêè. Ecëè ceìaôop c èìeíeì sem_num yæe oòêpûò äëÿ ècïoëüçoâaíèÿ äpyãèìè ïpoöeccaìè, â errno çaíocèòcÿ êoä oøèáêè EEXIST. Ecëè yêaçaííûé ôaéë cyùecòâyeò, ío íe èìeeò ceìaôopíoão òèïa, â errno çaíocèòcÿ ENOTNAM. Ecëè ceìaôop íe áûë èíèöèaëèçèpoâaí âûçoâoì creatsem, â errno çaíocèòcÿ ENAVAIL.

ÇAÌE×AÍÈß
Ïocëe âûçoâa creatsem íeoáxoäèìo âûçâaòü waitsem äëÿ ïoëy÷eíèÿ yïpaâëeíèÿ âûápaííûì pecypcoì.

Ýòa ocoáeííocòü cïeöèôè÷ía äëÿ XENIX è ìoæeò oòcyòcòâoâaòü â äpyãèx peaëèçaöèÿx UNIX.

Ïpoãpaììû, ècïoëüçyþùèe ýòy ôyíêöèþ, äoëæíû êoìïoíoâaòücÿ c ôëaãoì -lx.