LOCKING(3)
LOCKING(3)
XENIX System V (21 èþíÿ 1987)
ÈÌß
locking - áëoêèpyeò èëè paçáëoêèpyeò y÷acòoê ôaéëa äëÿ ÷òeíèÿ èëè çaïècè
ÑÈÍÒÀÊÑÈÑ
#include <sys/types.h>
#include <sys/locking.h>
int locking (fildes, mode, size) int fildes, mode; long size;
ÎÏÈÑÀÍÈÅ
locking ïoçâoëÿeò ïpoöeccy yïpaâëÿòü çaäaííûìè áaéòaìè â ôaéëe. Äpyãèe ïpoöeccû, æeëaþùèe ÷èòaòü èëè ïècaòü y÷acòoê ôaéëa, coäepæaùèé áëoêèpoâaííûe áaéòû, áyäyò æäaòü äo òex ïop, ïoêa y÷acòoê íe paçáëoêèpyeòcÿ â çaâècèìocòè oò peæèìa ycòaíoâëeííoé áëoêèpoâêè.
×òoáû ìoæío áûëo ycòaíoâèòü áëoêèpoâêy oò ÷òeíèÿ, ôaéë äoëæeí áûòü oòêpûò äëÿ ÷òeíèÿ èëè ÷òeíèÿ/çaïècè. ×òoáû ìoæío áûëo ycòaíoâèòü áëoêèpoâêy oò çaïècè, ôaéë äoëæeí áûòü oòêpûò äëÿ çaïècè èëè ÷òeíèÿ/çaïècè. Ïpè íeâûïoëíeíèè ëþáoão èç ýòèx ycëoâèé áëoêèpoâêa íe còaâèòcÿ è ôoìèpyeòcÿ oøèáêa EINVAL.
Ïpoöecc, æeëaþùèé ÷èòaòü èëè ïècaòü y÷acòoê, paíee áëoêèpoâaííûé oò ÷òeíèÿ èëè çaïècè äpyãèì ïpoöeccoì (ècïoëüçyÿ peæèì LK_LOCK èëè LK_NBLCK), áyäeò æäaòü ocâoáoæäeíèÿ y÷acòêa áëoêèpoâaâøèì eão ïpoöeccoì.
Ïpoöecc, æeëaþùèé ïècaòü y÷acòoê ôaéëa, ÷òo áûë çaáëoêèpoâaí oò çaïècè äpyãèì ïpoöeccoì (ècïoëüçyÿ peæèì LK_RLCK èëè LK_NBRLCK), áyäeò æäaòü ocâoáoæäeíèÿ y÷acòêa áëoêèpoâaâøèì eão ïpoöeccoì, a ïpoöecc, æeëaþùèé ÷èòaòü ýòoò y÷acòoê, cìoæeò âûïoëíèòü ÷òeíèe.
Ïpoöecc, æeëaþùèé áëoêèpoâaòü y÷acòoê, coäepæèìoe êoòopoão yæe áëoêèpoâaío äpyãèì ïpoöeccoì, áyäeò æäaòü, ecëè peæèì áëoêèpoâêè LK_LOCK èëè LK_RLCK, è áyäeò âoçâpaùaòü yïpaâëeíèe c oøèáêoé EACCES, ecëè peæèì áëoêèpoâêè LK_NBLCK èëè LK_NBRLCK.
fildes ÿâëÿeòcÿ íoìepoì oòêpûòoão ôaéëa, âoçâpaùaeìûì âûçoâaìè creat, open, dup èëè pipe.
mode yêaçûâaeò peæèì áëoêèpoâêè y÷acòêa. Cèìâoëè÷ecêèe è ÷ècëoâûe çía÷eíèÿ ýòoão apãyìeíòa òaêoâû:
Paçáëoêèpyeò y÷acòoê. Teêyùèé ïpoöecc ocâoáoæäaeò y÷acòoê, êoòopûé oí paíee áëoêèpoâaë. |
Áëoêèpyeò y÷acòoê. Teêyùèé ïpoöecc áyäeò æäaòü ocâoáoæäeíèÿ y÷acòêa, ecëè êaêaÿ-ëèáo eão ÷acòü áëoêèpoâaía äpyãèì ïpoöeccoì. B êoíe÷íoì èòoãe y÷acòoê áëoêèpyeòcÿ òeêyùèì ïpoöeccoì è äpyãèe ïpoöeccû íe ìoãyò òeïepü ÷èòaòü èëè ïècaòü ýòoò y÷acòoê (áëoêèpoâêa oò ÷òeíèÿ è çaïècè). |
Áëoêèpyeò y÷acòoê. Ecëè êaêaÿ-ëèáo ÷acòü y÷acòêa áëoêèpoâaía äpyãèì ïpoöeccoì, âoçâpaùaeòcÿ oøèáêa EACCES áeç oæèäaíèÿ ocâoáoæäeíèÿ áëoêèpoâaííoão y÷acòêa (áëoêèpoâêa áeç oæèäaíèÿ). |
Aíaëoãè÷ío LK_LOCK ça ècêëþ÷eíèeì òoão, ÷òo áëoêèpoâaííûé y÷acòoê ìoæeò ÷èòaòücÿ äpyãèìè ïpoöeccaìè (áëoêèpoâêa oò çaïècè). |
Aíaëoãè÷ío LK_NBLCK ça ècêëþ÷eíèeì òoão, ÷òo áëoêèpoâaííûé y÷acòoê ìoæeò ÷èòaòücÿ äpyãèìè ïpoöeccaìè (áëoêèpoâêa oò çaïècè áeç oæèäaíèÿ). |