【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!
    
    国产成人AV综合久久|
    日日狠狠久久偷偷色综合96蜜桃|
    久久人人超碰精品CAOPOREN|
    国产99久久九九精品无码|
    亚洲国产成人久久一区久久|
    久久天天婷婷五月俺也去|
    国产高潮国产高潮久久久|
    成人精品一区二区久久久|
    无码国内精品久久综合88
    |
    欧美精品一区二区精品久久|
    大香网伊人久久综合网2020|
    久久精品亚洲AV久久久无码|
    9191精品国产免费久久|
    国产99久久久国产精品小说|
    国产一区二区三区久久精品|
    亚洲AV无码1区2区久久|
    日韩一区二区久久久久久|
    亚洲午夜无码久久久久|
    伊人久久综在合线亚洲2019|
    久久久亚洲欧洲日产国码是AV|
    亚洲国产精品久久|
    久久综合香蕉国产蜜臀AV|
    久久久SS麻豆欧美国产日韩|
    精品国产婷婷久久久|
    狠狠色丁香久久综合婷婷|
    久久中文字幕人妻丝袜|
    香蕉aa三级久久毛片|
    久久国产精品视频|
    精品一久久香蕉国产线看播放|
    99久久精品免费观看国产|
    国内精品久久久久久久97牛牛|
    热re99久久精品国99热|
    一本一道久久a久久精品综合|
    日韩欧美亚洲国产精品字幕久久久
    |
    久久99久国产麻精品66|
    亚洲精品tv久久久久|
    性做久久久久久久久|
    日韩精品无码久久一区二区三|
    欧美久久久久久|
    美女久久久久久|
    久久热这里只有精品在线观看|