Linux½ø³Ì¼äͨѶ֮ÐźÅÁ¿
Ò». ʲôÊÇÐźÅÁ¿
ÐźÅÁ¿(Semaphore)-- Ï൱һ¸öÐźŵƣ¬³ÌÐòÀïÊÇÒ»¸ö·Ç¸ºÕûÊý£¬±íʾ״̬.
¿ÉÒÔÓÃÀ´±£»¤Á½¸ö»ò¶à¸ö¹Ø¼ü´úÂë¶Î£¬ÕâЩ¹Ø¼ü´úÂë¶Î²»Äܲ¢·¢µ÷Óá£ÔÚ½øÈëÒ»¸ö¹Ø¼ü´úÂë¶Î֮ǰ£¬Ï̱߳ØÐë»ñȡһ¸öÐźÅÁ¿¡£
Èç¹û¹Ø¼ü´úÂë¶ÎÖÐûÓÐÈκÎỊ̈߳¬ÄÇôÏ̻߳áÁ¢¼´½øÈë¸Ã¿òͼÖеÄÄǸö²¿·Ö¡£Ò»µ©¸Ã¹Ø¼ü´úÂë¶ÎÍê³ÉÁË£¬ÄÇô¸ÃÏ̱߳ØÐëÊÍ·ÅÐźÅÁ¿¡£
ÆäËüÏë½øÈë¸Ã¹Ø¼ü´úÂë¶ÎµÄÏ̱߳ØÐëµÈ´ýÖ±µ½µÚÒ»¸öÏß³ÌÊÍ·ÅÐźÅÁ¿¡£ÎªÁËÍê³ÉÕâ¸ö¹ý³Ì£¬ÐèÒª´´½¨Ò»¸öÐźÅÁ¿£¬
È»ºó½«Acquire Semaphore ÒÔ¼°Release Semaphore ·Ö±ð·ÅÖÃÔÚÿ¸ö¹Ø¼ü´úÂë¶ÎµÄÊ×Ä©¶Ë¡£È·ÈÏÕâЩÐźÅÁ¿ÒýÓõÄÊdzõʼ´´½¨µÄÐźÅÁ¿¡£
ÐźÅÁ¿£ºÒ»¸öÕûÊý£»
´óÓÚ»òµÈÓÚ0ʱ´ú±í¿É¹©²¢·¢½ø³ÌʹÓõÄ×ÊԴʵÌåÊý£»
СÓÚ0ʱ´ú±íÕýÔڵȴýʹÓÃÁÙ½çÇøµÄ½ø³ÌÊý£»
ÓÃÓÚ»¥³âµÄÐźÅÁ¿³õʼֵӦ´óÓÚ0£»
Ö»ÄÜͨ¹ýP¡¢VÔÓï²Ù×÷¶ø¸Ä±ä£»
ÐźÅÁ¿ÔªËØ×é³É£º
1¡¢±íʾÐźÅÁ¿ÔªËصÄÖµ£»
2¡¢×îºó²Ù×÷ÐźÅÁ¿ÔªËصĽø³ÌID
3¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµ+1µÄ½ø³ÌÊý£»
4¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµÎª0µÄ½ø³ÌÊý£»
¶þ¡¢Ö÷Òªº¯Êý
1.1 ´´½¨ÐźÅÁ¿
int semget(
key_t key, //±êʶÐźÅÁ¿µÄ¹Ø¼ü×Ö£¬ÓÐÈýÖÖ·½·¨£º1¡¢Ê¹ÓÃIPC——PRIVATEÈÃϵͳ²úÉú£¬ 2¡¢Ìôѡһ¸öËæ»úÊý£¬3¡¢Ê¹ÓÃftok´ÓÎļþ·¾¶ÃûÖвúÉú
int nSemes, //ÐźÅÁ¿¼¯ÖÐÔªËØ¸öÊý
int flag //IPC_CREAT£»IPC_EXCL Ö»ÓÐÔÚÐźÅÁ¿¼¯²»´æÔÚʱ´´½¨
)
³É¹¦£º·µ»ØÐźÅÁ¿¾ä±ú
ʧ°Ü£º·µ»Ø-1
1.2 ʹÓÃftokº¯Êý¸ù¾ÝÎļþ·¾¶Ãû²úÉúÒ»¸ö¹Ø¼ü×Ö
key_t ftok(const char *pathname,int proj_id);
·¾¶Ãû³Æ±ØÐëÓÐÏàӦȨÏÞ
1.3 ¿ØÖÆÐźÅÁ¿
int semctl(
int semid, //ÐźÅÁ¿¼¯µÄ¾ä±ú
int semnum, //ÐźÅÁ¿¼¯µÄÔªËØÊý
int cmd, //ÃüÁî
/*union senum arg */... //
)
³É¹¦£º·µ»ØÏàÓ¦µÄÖµ
ʧ°Ü£º·µ»Ø-1
ÃüÁîÏêϸ˵Ã÷:
cmd: IPC_RMID ɾ³ýÒ»¸öÐźÅÁ¿
IPC_EXCL Ö»ÓÐÔÚÐźÅÁ¿¼¯²»´æÔÚʱ´´½¨
IPC_SET ÉèÖÃÐźÅÁ¿µÄÐí¿ÉȨ
SETVAL ÉèÖÃÖ¸¶¨ÐźÅÁ¿µÄÔªËØµÄֵΪ agc.val
GETVAL »ñµÃÒ»¸öÖ¸¶¨ÐźÅÁ¿µÄÖµ
GETPID »ñµÃ×îºó²Ù×Ý´ËÔªËØµÄ×îºó½ø³ÌID
GETNCNT »ñµÃµÈ´ýÔªËØ±äΪ1µÄ½ø³ÌÊý
GETZCNT »ñµÃµÈ´ýÔªËØ±äΪ0µÄ½ø³ÌÊý
union senum ¶¨ÒåÈçÏ£º
union senum{
int val;
struct semid_ds *buf;
unsigned short * array;
}agc;
ÆäÖÐ semid_ds ¶¨ÒåÈçÏ£º
struct semid_ds{
struct ipc_pem sem_pem; /
Ïà¹ØÎĵµ£º
1¡¢È¨Ï޵IJ鿴
ls -l ÎļþÃû³Æ
2¡¢È¨ÏÞÐÞ¸Ä
chmod abc file
ÆäÖÐa,b,c¸÷Ϊһ¸öÊý×Ö£¬·Ö±ð±íʾUser¡¢Group¡¢¼°OtherµÄȨÏÞ¡£
r=4£¬w=2£¬x=1£¬x±êʾִÐÐȨÏÞ¡£ÈôÒªrwxÊôÐÔÔò4+2+1=7£»ÈôÒ ......
¾²Ì¬º¯Êý¿âÊÇÔÚ³ÌÐòÖ´ÐÐǰ¾Í¼ÓÈ뵽Ŀ±ê³ÌÐòÖÐÈ¥ÁË£»¶ø¹²Ïíº¯Êý¿âÔòÊÇÔÚ³ÌÐòÆô¶¯µÄʱºò¼ÓÔØµ½³ÌÐòÖУ¬Ëü¿ÉÒÔ±»²»Í¬µÄ³ÌÐò¹²Ïí£»¶¯Ì¬¼ÓÔØº¯Êý¿âÔò¿ÉÒÔÔÚ³ÌÐòÔËÐеÄÈκÎʱºò¶¯Ì¬µÄ¼ÓÔØ¡£
¾²Ì¬º¯Êý¿âʵ¼ÊÉϾÍÊǼòµ¥µÄÒ»¸öÆÕͨµÄÄ¿±êÎļþµÄ¼¯ºÏ£¬Ò»°ãÀ´ËµÏ°¹ßÓÓ.a”×÷ΪÎļþµÄºó׺¡£¿ÉÒÔÓÃarÕâ¸ö³ÌÐòÀ´²úÉú¾²Ì¬º¯Êý ......
<Ctrl><Alt><F1>
Çл»µ½µÚÒ»¸öÎı¾ÖÕ¶Ë¡£ÔÚLinuxÏÂÄã¿ÉÒÔÓжà´ïÁù¸ö²»Í¬µÄÖÕ¶Ë¡£Õâ¸öÃüÁîµÄÒâ˼ÊÇ£º“ͬʱ°´×¡<Ctrl>¼üºÍ<Alt>¼ü£¬È»ºó°´<F1>¼ü£¬ÔÙÊÍ·ÅËùÓеļü”¡£
<Ctrl><Alt><Fn> (n=1..6)
Çл»µ½µÚn¸öÎı¾ÖÕ¶Ë¡££¨ÄãÒ²¿ÉÒÔʹÓò»ÊǺܾ³£Óõ½µÄ ......
¹ÜµÀ¼°ÓÐÃû¹ÜµÀ
ÔÚ±¾ÏµÁÐÐòÖÐ×÷Õ߸ÅÊöÁË linux ½ø³Ì¼äͨÐŵļ¸ÖÖÖ÷ÒªÊֶΡ£ÆäÖйܵÀºÍÓÐÃû¹ÜµÀÊÇ×îÔçµÄ½ø³Ì¼äͨÐÅ»úÖÆÖ®Ò»£¬¹ÜµÀ¿ÉÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµ½ø³Ì¼äµÄͨÐÅ£¬ÓÐÃû¹ÜµÀ¿Ë·þÁ˹ܵÀûÓÐÃû×ÖµÄÏÞÖÆ£¬Òò´Ë£¬³ý¾ßÓйܵÀËù¾ßÓеŦÄÜÍ⣬Ëü»¹ÔÊÐíÎÞÇ×Ôµ¹ØÏµ½ø³Ì¼äµÄͨÐÅ¡£ ÈÏÇå¹ÜµÀºÍÓÐÃû¹ÜµÀµÄ¶Áд¹æÔòÊÇÔÚ³ÌÐòÖÐÓ¦Ó ......
Linux ÎļþºÍĿ¼µÄÊôÐÔ
×÷Õߣº±±ÄÏÄϱ±
À´×Ô£ºhttp://www.linuxsir.org/main/?q=node/196
ÕªÒª£º±¾ÎĽ²ÊöµÄÊÇÎļþ»òĿ¼µÄÊôÐÔ£¬±ÈÈç½Úµãinode¡¢ÎļþÀàÐÍ¡¢ÎļþȨÏÞ¼°¹éÊô£»»¹¶Ôsetuid¡¢setgid¼°Õ³Ìùλ½øÐÐÁËÒ»°ãÐԵĽ²½â¡£¶Ôln
¡¢chmod¡¢umask¡¢chown¡¢chgrp ¡¢touch µÄÓ÷¨Ò²½øÐÐÁ˱ȽÏÏêϸµÄ˵Ã÷ºÍ¾ÙÀý£»
Ŀ¼ ......