作家
登录

浅析Linux的共享内存与tmpfs文件系统

作者: 来源: 2017-08-14 15:02:46 阅读 我要评论

  •  
  •         result = mmap(NULL, MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); 
  •  
  •         if(result == MAP_FAILED){ 
  •  
  •             printf("mapped failed\n"); 
  •  
  •             exit(1); 
  •  
  •         } 
  •  
  •         /* ... operate result pointer */ 
  •  
  •         printf("memset\n"); 
  •  
  •         memset(result, 0, MAP_SIZE); 
  •  
  •         //shm_unlink("/shm1"); 
  •  
  •         return 0; 
  •  
  •     } 
  •  
  •  
  • # ./shmwrite 
  •  
  • memset 
  •  
  • Bus error 
  • 可以看到,写65M的数据会报Bus error缺点。

    然则,却可以在/dev/shm创建新的文件:

    1. # ls -lh /dev/shm/ -lh 
    2.  
    3. 总用量 64M 
    4.  
    5. -rw-r--r-- 1 root root 65M 3月 3 15:23 shm1 
    6.  
    7. -rw-r--r-- 1 root root 65M 3月 3 15:24 shm2 
    8.  
    9. 这很正常,ls显示的是inode->size。 
    10.  
    11. # stat /dev/shm/shm2 
    12.  
    13. File: "/dev/shm/shm2" 
    14.  
    15. Size: 68157440 Blocks: 0 IO Block: 4096 通俗文件 
    16.  
    17. Device: 10h/16d Inode: 217177 Links: 1 
    18.  
    19. Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) 
    20.  
    21. Access: 2015-03-03 15:24:28.025985167 +0800 
    22.  
    23. Modify: 2015-03-03 15:24:28.025985167 +0800 
    24.  
    25. Change: 2015-03-03 15:24:28.025985167 +0800 

    (5)向SYS V共享内存写数据

    将System V共享内存的最大年夜值调剂为65M(/dev/shm仍然为64M)。

    1. # cat /proc/sys/kernel/shmmax 
    2.  
    3. 68157440 

    点击(此处)折叠或打开

    1. /*gcc -o shmv shmv.c*/#include <sys/ipc.h> 
    2.  
    3. #include <sys/shm.h> 
    4.  
    5. #include <sys/types.h> 
    6.  

    7.   推荐阅读

        Windows 7系统U盘插入后假死怎么处理?

      Win7体系U盘插入后假逝世怎么处理?有效户表示,在Win7体系下,U盘插入后体系会出现假逝世的问题,一般十几秒钟就恢复正常了,固然对操作体系毫无影响,我们却不想存在任何假设的病毒存在,>>>详细阅读


      本文标题:浅析Linux的共享内存与tmpfs文件系统

      地址:http://www.17bianji.com/lsqh/36688.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)