Linux系統程式設計之mmap實現父子程序通訊

2021-10-21 11:14:21 字數 806 閱讀 6592

原理:

在映**對映區之後,父子都可以拿到對映的記憶體區域的記憶體位址,如果乙個程序改變了記憶體區域的內容,另外乙個去讀的時候會有變化。

先建立對映區在fork

所以,應該先建立對映區再fork。

#include

#include

#include

#include

#include

#include

#include

int main(0

//fork子程序

pid_t pid =fork();

//父子程序交替修改資料

if(pid==0)

else if(pid>0)

munmap(mem,4)

; close(fd)

;return 0;

}

輸出

注意:mem.txt作用僅僅是開啟乙個檔案。

結論:父子程序共享:1、開啟檔案描述符,2、mmap建立對映區(但是必須使用map_shared)

如果map_shared改位map_private時,父程序沒有讀到子程序的資料,子程序也沒有讀到父程序的資料,結果如圖所示

所以程序要通訊的話,flags必須設為map_shared

Linux系統程式設計之 mmap對映

共享記憶體 了解mmap 函式的使用 例項 include include include include include int main 拷貝資料 strcpy mem,hell0 釋放對映區 mummap mem,8 close fd 輸出 mem.txt檔案包含hello 如果char me...

Linux系統程式設計 記憶體對映 mmap

mmap 系統呼叫在呼叫程序的虛擬位址空間中建立乙個新記憶體對映。對映分為兩種。檔案對映 檔案對映將乙個檔案的一部分直接對映到呼叫程序的虛擬記憶體中。一旦乙個檔案被對映之後就可以通過在相應的記憶體區域中操作位元組來訪問檔案內容了。對映的分頁會在需要的時候從檔案中 自動 載入。匿名對映 乙個匿名對映沒...

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...