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&num; 进程间共享内存通信方式

从别处看到一篇文章做进程间通信很好使,唯一的问题是,需要注意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)在进程间共享的原理分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值