李國帥 編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 就可以了.如果需要和物理檔案關聯,要確保你的物理檔案建立的時候的訪問模式和 保護設定 匹配,比如 物理檔案唯讀,記憶體...