|
éíñ
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.
|