程序間通訊 記憶體對映

2021-06-29 04:47:09 字數 1105 閱讀 9011

程序1的資料有時需要傳送給程序b,這可以通過記憶體對映實現。

主要用到的函式:

//寫方式開啟對映,page_writecopy 為寫操作留下備份

dword dwmaximumsizehigh,          //檔案對映的最大長度的高32位,一般設為0,用低32位一般就夠用了

dword dwmaximumsizelow,           //檔案對映的最大長度的低32位

lpctstr lpname                               //共享記憶體名稱,其他程序可用這個名字來訪問這個檔案映像);

函式呼叫成功就返回乙個控制代碼,後面會繼續用到。

2.在該程序將檔案對映到乙個程序的位址空間上

__in dword dwfileoffsethigh,                //檔案對映起始偏移的高32位

__in dword dwfileoffsetlow,                 //檔案對映起始偏移的低32位

__in size_t dwnumberofbytestomap     //指定對映檔案的位元組數);

例子:

程序1中建立映像,並傳送資料

//建立檔案映像物件

lpstr strdata;

//將檔案對映到乙個程序的位址空間上

if(strdata==null)

//向對映記憶體寫資料

sprintf(strdata,m_strsenddata);

//釋放映像記憶體

unmapviewoffile(strdata);

程序2裡接收資料

//建立檔案映像物件

lpstr strdata;   

//將檔案對映到乙個程序的位址空間上

if(strdata==null)   

//獲取映像記憶體的資料量

m_strreceivedata.format("%s", strdata);

//釋放映像記憶體

unmapviewoffile(strdata);

使用完記得釋放映像記憶體。

程序間通訊之記憶體對映 mmap記憶體對映

讀資料端程序 mmanp r.c include include include include include include define len 0x1000 int main close fd while 1 close fd munmap addr,len return 0 寫資料端程序 ...

記憶體檔案對映 程序間通訊

記憶體對映檔案可以分為兩種 一種是普通的檔案,它需要乙個普通的檔案控制代碼,用於快速的讀寫檔案,這種檔案的資料在程序退出後會儲存在硬碟上,所以程序在下次執行時可以得到之前的資料 另一種是頁檔案,當建立記憶體對映檔案的時候傳入無效的控制代碼,這時會把頁檔案當作臨時的共享儲存空間,當程序退出後這些資料是...

C 通過記憶體對映 程序間通訊

1.為了提速,沒用序列化,改自己寫對映。2.為了方便改動變數型別,都是分配8位元組。3.我這裡的body結構體一半是a端寫b端都,另一半是b端寫a端讀,看起來比較亂。charts using system using system.io using system.collections.generi...