Èý¡¢posix¹²ÏíÄڴ溯Êý posix¹²ÏíÄÚ´æÇøÉæ¼°Á½¸ö²½Ö裺 1¡¢Ö¸¶¨Ò»¸öÃû×Ö²ÎÊýµ÷ÓÃshm_open,ÒÔ´´½¨Ò»¸öÐµĹ²ÏíÄÚ´æÇø¶ÔÏó»ò´ò¿ªÒ»¸öÒÔ´æÔڵĹ²ÏíÄÚ´æÇø¶ÔÏó¡£ 2¡¢µ÷ÓÃmmap°ÑÕâ¸ö¹²ÏíÄÚ´æÇøÓ³Éäµ½µ÷Óýø³ÌµÄµØÖ·¿Õ¼ä¡£´«µÝ¸øshm_openµÄÃû×Ö²ÎÊýËæºóÓÉÏ£Íû¹²Ïí¸ÃÄÚ´æÇøµÄÈÎºÎÆäËû½ø³ÌʹÓᣠ5£® Ãû³Æ:£º shm_open ¹¦ÄÜ£º ´ò¿ª»ò´´½¨Ò»¸ö¹²ÏíÄÚ´æÇø Í·Îļþ£º #include º¯ÊýÔÐΣº int shm_open(const char *name,int oflag,mode_t ...
by shage100 - LinuxÎĵµ×¨Çø - 2008-04-16 09:42:38 ÔĶÁ£¨499£© »Ø¸´£¨0£©
Ò»¡¢Ê²Ã´Êǹ²ÏíÄÚ´æÇø ¹²ÏíÄÚ´æÇøÊÇ×î¿ìµÄ¿ÉÓÃIPCÐÎʽ¡£ËüÔÊÐí¶à¸ö²»Ïà¹ØµÄ½ø³ÌÈ¥·ÃÎÊͬһ²¿·ÖÂß¼ÄÚ´æ¡£Èç¹ûÐèÒªÔÚÁ½¸öÔËÐÐÖеĽø³ÌÖ®¼ä´«ÊäÊý¾Ý£¬¹²ÏíÄڴ潫ÊÇÒ»ÖÖЧÂʼ«¸ßµÄ½â¾ö·½°¸¡£Ò»µ©ÕâÑùµÄÄÚ´æÇøÓ³Éäµ½¹²ÏíËüµÄ½ø³ÌµÄµØÖ·¿Õ¼ä£¬ÕâЩ½ø³Ì¼äÊý¾ÝµÄ´«Êä¾Í²»ÔÙÉæ¼°Äںˡ£ÕâÑù¾Í¿ÉÒÔ¼õÉÙϵͳµ÷ÓÃʱ¼ä£¬Ìá¸ß³ÌÐòЧÂÊ¡£ ¹²ÏíÄÚ´æÊÇÓÉIPCΪһ¸ö½ø³Ì´´½¨µÄÒ»¸öÌØÊâµÄµØÖ··¶Î§£¬Ëü½«³öÏÖÔÚ½ø³ÌµÄµØÖ·¿Õ¼äÖС£ÆäËû½ø³Ì¿ÉÒÔ°Ñͬһ¶Î¹²...
Îå¡¢¹²ÏíÄÚ´æÇøµÄдÈëºÍ¶Á³ö ÉÏÃæÎÒÃǽéÉÜÁËmmapº¯Êý£¬ÏÂÃæÎÒÃǾͿÉÒÔͨ¹ýÕâЩº¯Êý£¬°Ñ½ø³ÌÓ³Éäµ½¹²ÏíÄÚ´æÇø¡£ È»ºóÎÒÃǾͿÉÒÔͨ¹ý¹²ÏíÄÚ´æÇø½øÐнø³Ì¼äͨÐÅÁË¡£ ÏÂÃæÊǹ²ÏíÄÚ´æÇøÐ´ÈëµÄÀý×Ó£º /*shm_write.hдÈë/¶Á³ö¹²ÏíÄÚ´æÇø*/ #include #include #include #include int main(int argc,char **argv) { int shm_id; struct stat buf; char *ptr; if(argc!=2) { printf(¡°usage:shm_open \n¡±); ...
Èý¡¢posix¹²ÏíÄڴ溯Êý posix¹²ÏíÄÚ´æÇøÉæ¼°Á½¸ö²½Ö裺 1¡¢Ö¸¶¨Ò»¸öÃû×Ö²ÎÊýµ÷ÓÃshm_open,ÒÔ´´½¨Ò»¸öÐµĹ²ÏíÄÚ´æÇø¶ÔÏó»ò´ò¿ªÒ»¸öÒÔ´æÔڵĹ²ÏíÄÚ´æÇø¶ÔÏó¡£ 2¡¢µ÷ÓÃmmap°ÑÕâ¸ö¹²ÏíÄÚ´æÇøÓ³Éäµ½µ÷Óýø³ÌµÄµØÖ·¿Õ¼ä¡£´«µÝ¸øshm_openµÄÃû×Ö²ÎÊýËæºóÓÉÏ£Íû¹²Ïí¸ÃÄÚ´æÇøµÄÈÎºÎÆäËû½ø³ÌʹÓᣠ5£® Ãû³Æ:£º shm_open ¹¦ÄÜ£º ´ò¿ª»ò´´½¨Ò»¸ö¹²ÏíÄÚ´æÇø Í·Îļþ£º #include º¯ÊýÔÐΣº int shm_open(const char *name,int oflag,mode_t ...
Ò»¡¢Ê²Ã´Êǹ²ÏíÄÚ´æÇø ¹²ÏíÄÚ´æÇøÊÇ×î¿ìµÄ¿ÉÓÃIPCÐÎʽ¡£ËüÔÊÐí¶à¸ö²»Ïà¹ØµÄ½ø³ÌÈ¥·ÃÎÊͬһ²¿·ÖÂß¼ÄÚ´æ¡£Èç¹ûÐèÒªÔÚÁ½¸öÔËÐÐÖеĽø³ÌÖ®¼ä´«ÊäÊý¾Ý£¬¹²ÏíÄڴ潫ÊÇÒ»ÖÖЧÂʼ«¸ßµÄ½â¾ö·½°¸¡£Ò»µ©ÕâÑùµÄÄÚ´æÇøÓ³Éäµ½¹²ÏíËüµÄ½ø³ÌµÄµØÖ·¿Õ¼ä£¬ÕâЩ½ø³Ì¼äÊý¾ÝµÄ´«Êä¾Í²»ÔÙÉæ¼°Äںˡ£ÕâÑù¾Í¿ÉÒÔ¼õÉÙϵͳµ÷ÓÃʱ¼ä£¬Ìá¸ß³ÌÐòЧÂÊ¡£ ¹²ÏíÄÚ´æÊÇÓÉIPCΪһ¸ö½ø³Ì´´½¨µÄÒ»¸öÌØÊâµÄµØÖ··¶Î§£¬Ëü½«³öÏÖÔÚ½ø³ÌµÄµØÖ·¿Õ¼äÖС£ÆäËû½ø³Ì¿ÉÒÔ°Ñͬһ¶Î¹²...
ÎÒÔÚshm_openµÄʱºò£¬openµÄÎļþÃû³ÆÎª£º/tmp/.posix_shm µ«ÊÇ·µ»ØµÄfdΪ-1£¬Ê§°Ü£¬ºóÀ´ÎļþÃû³Æ¸ÄΪposix_shm£¬Ò²Î¢ÊÇ˵²»ÔÙÊÇ´øÂ·¾¶ÁË£¬¾ÍûÎÊÌâÁË ÏµÍ³ÊÇRedHat AS4, gcc 3.23 ÔÀ´±¾ÒâÊÇÏëÔÚ/tmpĿ¼Ï´´½¨Õâ¸öÎļþµÄ£¬ÒòΪRichard StevensµÄUNIXÍøÂç±à³ÌµÚ¶þ¾íÀïÒ²ÓÐÕâÑùµÄÀý×Ó£¬È»ºó»¹¿ÉÒÔ¹Û²ìÕâ¸öÎļþµÄ¸÷ÖÖÐÅÏ¢¡£ µ«ÊÇʵ¼ÊÇé¿öÊÇÕâô×öÎÞ·¨³É¹¦£¬ÎÒ°ÑÎļþÃû³Æ¸ÄΪ²»´øÂ·¾¶ºó¾ÍokÁË£¬µ±È»£¬ÔÚunixÍøÂç±à³ÌµÚ¶þ¾íÖеĵÚ...
ÇëÎÊposix¹²ÏíÄÚ´æ Óë ʹÓÃmmapÓ³ÉäÆÕͨÎļþ´´½¨µÄ¹²ÏíÄÚ´æÓÐÊ²Ã´Çø±ðÄØ fd = shm_open(filename, O_RDWR | O_CREAT | O_EXCL, 0644); ptr = mmap(NULL, size, PROT_READ | PROT_WRITE,MAP_SHARED, fd, 0); Óë fd = open(mapfilename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); ptr = mmap(0, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); ÕâÁ½ÖÖÓÐÊ²Ã´Çø±ðÄØ [ ±¾Ìû×îºóÓÉ shared_memory ÓÚ 2008-12-30 22:37 ±à¼ ]
¹²ÏíÄÚ´æ LinuxµÄ2.2.xÄÚºËÖ§³Ö¶àÖÖ¹²ÏíÄڴ淽ʽ£¬Èçmmap()ϵͳµ÷Óã¬posix¹²Ïí Äڴ棬ÒÔ¼°ÏµÍ³V¹²ÏíÄÚ´æ¡£ posix¹²ÏíÄÚ´æ Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½½ø³ÌA¡¢B ¸÷×ԵĽø³ÌµØÖ·¿Õ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ½½ø³ÌB¶Ô¹²ÏíÄÚ´æÖÐÊý¾ÝµÄ¸ü У¬·´Ö®ÒàÈ»¡£ ¹²ÏíÄÚ´æÎªÔÚ¶à¸ö½ø³ÌÖ®¼ä¹²ÏíºÍ´«µÝÊý¾ÝÌṩÁËÒ»ÖÖÓÐЧµÄ·½Ê½£¬µ«ÊÇ Æä²¢Î´Ìṩͬ²½»úÖÆ¡£ÓÉÓÚ¶à¸ö½ø...
Ò»¡¢Ê²Ã´ÊÇÌõ¼þ±äÁ¿ Ó뻥³âËø²»Í¬£¬Ìõ¼þ±äÁ¿ÊÇÓÃÀ´µÈ´ý¶ø²»ÊÇÓÃÀ´ÉÏËøµÄ¡£Ìõ¼þ±äÁ¿ÓÃÀ´×Ô¶¯×èÈûÒ»¸öỊ̈߳¬Ö±µ½Ä³ÌØÊâÇé¿ö·¢ÉúΪֹ¡£Í¨³£Ìõ¼þ±äÁ¿ºÍ»¥³âËøÍ¬Ê±Ê¹ÓᣠÌõ¼þ±äÁ¿Ê¹ÎÒÃÇ¿ÉÒÔ˯ÃߵȴýijÖÖÌõ¼þ³öÏÖ¡£Ìõ¼þ±äÁ¿ÊÇÀûÓÃÏ̼߳乲ÏíµÄÈ«¾Ö±äÁ¿½øÐÐͬ²½µÄÒ»ÖÖ»úÖÆ£¬Ö÷Òª°üÀ¨Á½¸ö¶¯×÷£ºÒ»¸öÏ̵߳ȴý"Ìõ¼þ±äÁ¿µÄÌõ¼þ³ÉÁ¢"¶ø¹ÒÆð£»ÁíÒ»¸öÏß³Ìʹ"Ìõ¼þ³ÉÁ¢"£¨¸ø³öÌõ¼þ³ÉÁ¢Ðźţ©¡£ Ìõ¼þµÄ¼ì²âÊÇÔÚ»¥³âËøµÄ±£»¤Ï½øÐеÄ...
Ò»¡¢Ê²Ã´ÊÇÌõ¼þ±äÁ¿ Ó뻥³âËø²»Í¬£¬Ìõ¼þ±äÁ¿ÊÇÓÃÀ´µÈ´ý¶ø²»ÊÇÓÃÀ´ÉÏËøµÄ¡£Ìõ¼þ±äÁ¿ÓÃÀ´×Ô¶¯×èÈûÒ»¸öỊ̈߳¬Ö±µ½Ä³ÌØÊâÇé¿ö·¢ÉúΪֹ¡£Í¨³£Ìõ¼þ±äÁ¿ºÍ»¥³âËøÍ¬Ê±Ê¹ÓᣠÌõ¼þ±äÁ¿Ê¹ÎÒÃÇ¿ÉÒÔ˯ÃߵȴýijÖÖÌõ¼þ³öÏÖ¡£Ìõ¼þ±äÁ¿ÊÇÀûÓÃÏ̼߳乲ÏíµÄÈ«¾Ö±äÁ¿½øÐÐͬ²½µÄÒ»ÖÖ»úÖÆ£¬Ö÷Òª°üÀ¨Á½¸ö¶¯×÷£ºÒ»¸öÏ̵߳ȴý"Ìõ¼þ±äÁ¿µÄÌõ¼þ³ÉÁ¢"¶ø¹ÒÆð£»ÁíÒ»¸öÏß³Ìʹ"Ìõ¼þ³ÉÁ¢"£¨¸ø³öÌõ¼þ³ÉÁ¢Ðźţ©¡£ Ìõ¼þµÄ¼ì²âÊÇÔÚ»¥³âËøµÄ±£»¤Ï½øÐеÄ...
5. Ãû³Æ:£º sem_wait/sem_trywait ¹¦ÄÜ£º µÈ´ý¹²Ïí×ÊÔ´ Í·Îļþ£º #include º¯ÊýÔÐΣº int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); ²ÎÊý£º sem Ö¸ÏòÐźŵƵÄÖ¸Õë ·µ»ØÖµ£º Èô³É¹¦Ôò·µ»Ø0£¬·ñÔò·µ»Ø-1¡£ ÎÒÃÇ¿ÉÒÔÓÃsem_waitÀ´ÉêÇë¹²Ïí×ÊÔ´£¬sem_waitº¯Êý¿ÉÒÔ²âÊÔËùÖ¸¶¨ÐźŵƵÄÖµ£¬Èç¹û¸ÃÖµ´óÓÚ0£¬ÄǾͽ«Ëü¼õ1²¢Á¢¼´·µ»Ø¡£ÎÒÃǾͿÉÒÔʹÓÃÉêÇëÀ´µÄ¹²Ïí×ÊÔ´ÁË¡£Èç¹û¸ÃÖµµÈÓÚ0£¬µ÷ÓÃÏ߳̾ͱ»½øÈë˯...