C++進程間共享數據實例
更新時間:2014年10月15日 10:04:59 投稿:shichen2014
這篇文章主要介紹了C++進程間共享數據的方法,是進行C++應用程序開發(fā)中非常實用的技巧,需要的朋友可以參考下
本文實例講述了C++進程間共享數據的實現方法,分享給大家供大家參考。具體實現方法如下:
復制代碼 代碼如下:
int main(int argc, char *argv[])
{
//RecursiveDelete("C:\\20_128\\");
//SelfRun("runModel");
//進程間內存共享
LPCTSTR lpName= "hello";
LPCTSTR lpContent = "123456";
HANDLE hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, lpName);
if (NULL == hMap) //打開失敗
{
//創(chuàng)建
hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, strlen(lpContent), lpName);
if (hMap == NULL)
{
return -1;
}
//寫入
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
strcpy((char*)lpBase, lpContent);
printf("write %s\n", lpContent);
}
else
{
//打開成功就只讀取
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (lpBase == NULL)
{
return -1;
}
printf("read %s\n",(char*)lpBase);
}
getchar();
return 0;
}
{
//RecursiveDelete("C:\\20_128\\");
//SelfRun("runModel");
//進程間內存共享
LPCTSTR lpName= "hello";
LPCTSTR lpContent = "123456";
HANDLE hMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, lpName);
if (NULL == hMap) //打開失敗
{
//創(chuàng)建
hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, strlen(lpContent), lpName);
if (hMap == NULL)
{
return -1;
}
//寫入
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
strcpy((char*)lpBase, lpContent);
printf("write %s\n", lpContent);
}
else
{
//打開成功就只讀取
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (lpBase == NULL)
{
return -1;
}
printf("read %s\n",(char*)lpBase);
}
getchar();
return 0;
}
希望本文所述對大家的C++程序設計有所幫助。
相關文章
C++深入探究哈希表如何封裝出unordered_set和unordered_map
哈希表是一種根據關鍵碼去尋找值的數據映射結構,該結構通過把關鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復雜,我想我舉個例子你就會明白了,最典型的的例子就是字典2022-06-06C++?中如何結束?while?(cin>>str)?的輸入
這篇文章主要介紹了C++?中如何結束?while?(cin>>str)?的輸入,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07C++實現LeetCode(128.求最長連續(xù)序列)
這篇文章主要介紹了C++實現LeetCode(128.求最長連續(xù)序列),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07