linux共享内存示例,linux 进程间共享内存示例
寫入端:
#include
#include
#include
#include
#include
using namespace std;
struct MappingDataType {
int mappingData;
};
bool SetUsedPID(string mappingName)
{
void *shm = NULL;
MappingDataType *shared;
int shmid = shmget((key_t), sizeof(MappingDataType), |IPC_CREAT);
if(shmid == -)
{
fprintf(stderr, "shmget failed\n");
return false;
}
shm = shmat(shmid, , );
if(shm == (void*)-)
{
fprintf(stderr, "shmat failed\n");
return false;
}
shared = (MappingDataType*)shm;
shared->mappingData = ::getpid();
/*if(shmdt(shm) == -1)
{
fprintf(stderr, "shmdt failed\n");
return false;
}
if(shmctl(shmid, IPC_RMID, 0) == -1)
{
fprintf(stderr, "shmctl(IPC_RMID) failed\n");
return false;
}*/
return true;
}
int main(int argc, char *argv[])
{
bool result = SetUsedPID("abc");
//打斷點,運行讀取端
cout << result << endl;
return ;
}
讀取端:
#include
#include
#include
#include
#include
using namespace std;
struct MappingDataType {
int mappingData;
};
int GetUsedPID(string mappingName)
{
void *shm = NULL;
MappingDataType *shared;
int shmid = shmget((key_t), sizeof(MappingDataType), | IPC_CREAT);
if (shmid == -)
{
fprintf(stderr, "shmget failed\n");
return ;
}
shm = shmat(shmid, , );
if (shm == (void*)-)
{
fprintf(stderr, "shmat failed\n");
return ;
}
shared = (struct MappingDataType*)shm;
int pid = shared->mappingData;
if (shmdt(shm) == -)
{
fprintf(stderr, "shmdt failed\n");
}
if (shmctl(shmid, IPC_RMID, ) == -)
{
fprintf(stderr, "shmctl(IPC_RMID) failed\n");
}
return pid;
}
int main(int argc, char *argv[])
{
int pid = GetUsedPID("abc");
cout << pid << endl; //<================= Put a breakpoint here
return ;
}
Windows進程間共享內存通信實例
Windows進程間共享內存通信實例 抄抄補補整出來 采用內存映射文件實現WIN32進程間的通訊:Windows中的內存映射文件的機制為我們高效地操作文件提供了一種途徑,它允許我們在WIN32進程中保 ...
【VS開發】內存映射文件進程間共享內存
內存映射文件進程間共享內存 內存映射文件的另一個功能是在進程間共享數據,它提供了不同進程共享內存的一個有效且簡單的方法.后面的許多例子都要用到共享內存.共享內存主要是通過映射機制實現的.Windows ...
C# 進程間共享內存通信方式
從別處看到一篇文章做進程間通信很好使,唯一的問題是,需要注意using的用法,Using有個用法3, using 語句允許程序員指定使用資源的對象應當何時釋放資源.using 語句中使用的對象必須實現 ...
Linux 進程間通訊詳解一
進程間的通訊 兩臺主機間的進程通訊 --socket 一臺主機間的進程通訊 --管道(匿名管道,有名管道) --System V進程間通信(IPC)包括System V消息隊列,System V信號量 ...
【筆記】Linux進程間同步和進程綁定至特定cpu
#define _GNU_SOURCE #include #include #include
linux進程間的通信之 共享內存
一.共享內存介紹 共享內存是三個IPC(Inter-Process Communication)機制中的一個. 它允許兩個不相關的進程訪問同一個邏輯內存. 共享內存是在兩個正在進行的進程之間傳遞數據的 ...
Android系統匿名共享內存Ashmem(Anonymous Shared Memory)在進程間共享的原理分析
總結
以上是生活随笔為你收集整理的linux共享内存示例,linux 进程间共享内存示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python里 try里怎么用int函数
- 下一篇: linuxmove命令_move命令详解