【Linux】<共享內存應用>——模擬實現不同進程把hello字符對<共享內存文件對象>的放入和取出操作

【Linux】<共享內存應用>——模擬實現不同進程把hello字符對<共享內存文件對象>的放入和取出操作

一.共享內存概述及相關指令

  1. 共享內存 共享內存(Shared Memory)是一種允許多個進程訪問同一塊內存空間的機制。這種技術常用于進程間通信(IPC)和數據共享,因為它提供了一種高效的方式來傳遞大量數據,而無需通過內核進行數據的復制。在共享內存模型中,兩個或多個進程可以將同一塊物理內存映射到它們各自的地址空間中。這意味著,當一個進程向這塊內存寫入數據時,其他進程可以立即看到這些更改,因為它們實際上是在訪問相同的內存位置。

  2. 共享內存文件所在目錄 代碼語言:JavaScript 代碼運行次數:0

    /dev/shm
  3. 查看共享內存文件屬性 代碼語言:javascript 代碼運行次數:0

    stat /my_shared_memory
  4. 查看共享文件內容 代碼語言:javascript 代碼運行次數:0

    hd /my_shared_memory
  5. 以0覆蓋共享文件 代碼語言:javascript 代碼運行次數:0

    dd /my_shared_memory

二.共享內存相關函數

  1. shm_open() 函數 shm_open() 函數用于創建或打開一個命名的共享內存對象,并返回一個文件描述符,即 shm_fd。這個函數的原型如下: 代碼語言:javascript 代碼運行次數:0

    int shm_open(const char *name, int oflag, mode_t mode); name:共享內存對象的名稱,這個名稱必須以斜杠(/)開頭,并且不能包含其他斜杠。例如,"/my_shared_memory" 是一個合法的名稱。 oflag:打開標志,可以是 O_RDONLY(只讀)、O_RDWR(讀寫)或 O_CREAT(如果對象不存在則創建它)等標志的組合。 mode:當 oflag 包含 O_CREAT 時,這個參數指定了新創建的共享內存對象的權限。例如:0666:對象的目錄權限。rw-rw-rw-====110 110 110
  2. ftruncate() 函數 ftruncate() 函數用于設置共享內存大小。 代碼語言:javascript 代碼運行次數:0

    ftruncate(shm_fd, 4096); // 將共享內存大小設置為4KB
  3. mmap() 函數 mmap() 函數將一個文件或者其它對象映射進內存,文件被映射到多個頁上。通過 mmap() 映射后,用戶可以直接操作這段虛擬地址進行文件的讀寫等操作,而不必再調用 read()、write() 等系統調用。 代碼語言:javascript 代碼運行次數:0

    void* mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset); addr:映射區的開始地址。通常設置為NULL,讓系統自動選擇地址 length:映射區的長度 prot:期望的內存保護標志,不能與文件的打開模式沖突??梢允且韵轮档慕M合:      PROT_EXEC:頁內容可以被執行。      PROT_READ:頁內容可以被讀取。      PROT_WRITE:頁可以被寫入。      PROT_NONE:頁不可訪問。 flags:指定映射對象的類型、映射選項和映射頁是否可以共享。 fd:有效的文件描述詞。如果MAP_ANONYMOUS被設定,為了兼容問題,其值應為-1。 offset:被映射對象內容的起點。

    【1】利用 mmap() 函數向共享內存寫入數據 使用 mmap() 函數將共享內存映射到進程的地址空間,然后通過指針操作來寫入數據。例如: 代碼語言:javascript 代碼運行次數:0

    int shm_fd; char* ptr; shm_fd = shm_open("/my_shared_memory", O_RDWR, 0666);//O_RDWR讀寫 ptr = mmap(NULL, 4096,  PROT_WRITE, MAP_SHARED, shm_fd, 0);//PROT_WRITE:頁可以被寫入 memcpy(ptr, "Hello, World!
    
    亚洲午夜久久久|
    日日狠狠久久偷偷色综合96蜜桃
    |
    日本精品久久久久久久久免费|
    久久伊人精品青青草原高清|
    国产激情久久久久影院老熟女|
    区亚洲欧美一级久久精品亚洲精品成人网久久久久
    |
    久久亚洲国产精品五月天婷|
    久久久久久综合网天天|
    91精品国产综合久久精品|
    久久久久无码专区亚洲av|
    日韩精品久久无码人妻中文字幕|
    久久这里只精品国产99热|
    国内精品久久久久久久久电影网
    |
    欧美精品九九99久久在观看|
    性欧美大战久久久久久久久
    |
    99久久无色码中文字幕人妻|
    亚洲国产精品婷婷久久|
    99久久精品免费|
    青草国产精品久久久久久
    |
    亚洲成色WWW久久网站|
    久久AAAA片一区二区|
    97精品伊人久久大香线蕉app|
    久久久久久国产精品美女
    |
    国产精品久久99|
    久久久女人与动物群交毛片|
    99久久香蕉国产线看观香|
    久久精品无码一区二区三区免费|
    777米奇久久最新地址|
    精品人妻久久久久久888|
    99精品国产综合久久久久五月天
    |
    久久久久亚洲AV成人网人人网站
    |
    久久久久国产精品三级网|
    99久久国产综合精品五月天喷水|
    精品久久久久中文字幕日本|
    五月丁香综合激情六月久久
    |
    亚洲国产高清精品线久久|
    久久国产精品偷99|
    久久免费大片|
    波多野结衣久久精品|
    久久午夜夜伦鲁鲁片免费无码影视|
    久久er国产精品免费观看8|