VC程序間共享記憶體的實現步驟

2021-08-14 00:27:23 字數 1356 閱讀 2586

李國帥 編2023年9月

程式1 -- 建立共享區:

建立乙個有名的共享記憶體

(handle)0xffffffff, //

0xffffffff表示建立乙個程序間共享的物件

null,

page_readwrite,

//讀寫共享0,

0x1000, //

共享區間大小4096

_t("

sharename

"));

void* m_pbasemapfile=mapviewoffile( //

對映到本程序的位址空間

m_hmapfile,

file_map_read|file_map_write,

0,0,

0);unsigned

char *p=(unsigned char*)m_pbasemapfile; //

使用共享區

p[0]=00;p[

1]=11;p[

2]=22

;system((

"pause

"));

unmapviewoffile(m_pbasemapfile);

//取消本程序位址空間的對映:

closehandle(m_hmapfile);

程式2 -- 使用共享區:

獲得共享記憶體控制代碼

file_map_write,

false,

_t("myfile

"));

void *m_pbasemapfile=mapviewoffile( //

對映到本程序的位址空間

m_hmapfile,

file_map_read|file_map_write,

0,0,

0);unsigned

char *p=(unsigned char*)m_pbasemapfile;

//cstring s;

"%#x: %d, %d, %d",p,p[0],p[1],p[2]); afxmessagebox(s);

wstring s; std::ostringstream oss;

oss<0]<1]<2]<<_t("

\n");s=oss.str();cout>>s;//

使用共享區

p[0]=33;p[

1]=44; //

修改共享區

system((

"pause

"));

unmapviewoffile(m_pbasemapfile);

//取消本程序位址空間的對映:

closehandle(m_hmapfile);

共享記憶體實現程序間通訊

1 物理檔案控制代碼 任何可以獲得的物理檔案控制代碼,如果你需要建立乙個物理檔案無關的記憶體對映也無妨,將它設定成為 0xffffffff invalid handle value 就可以了.如果需要和物理檔案關聯,要確保你的物理檔案建立的時候的訪問模式和 保護設定 匹配,比如 物理檔案唯讀,記憶體...

程序間共享記憶體

位於系統的交換分割槽 include incude int shmget key t key,size t size,int shm ipc excl ipc creat一起使用可確保共享記憶體已存在時返回錯誤 void shmat int shm id,const void shm addr,in...

共享記憶體實現程序間通訊 收藏

1 物理檔案控制代碼 任何可以獲得的物理檔案控制代碼,如果你需要建立乙個物理檔案無關的記憶體對映也無妨,將它設定成為 0xffffffff invalid handle value 就可以了.如果需要和物理檔案關聯,要確保你的物理檔案建立的時候的訪問模式和 保護設定 匹配,比如 物理檔案唯讀,記憶體...