c++采用boost库实现共享内存,可通过共享内存进行多进程之间的通信

/**
* @brief c++采用boost库实现共享内存,可通过共享内存进行多进程之间的通信
*
* @param pert
* @param 2023年11月7日12:39:00 
*/

#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
#include <iostream>
using namespace boost::interprocess;
int main1()
{
	try
	{
		// 创建共享内存对象
		shared_memory_object shm(create_only, "MySharedMemory", read_write);//通过create_only构造函数和指定的名称创建了一个共享内存对象MySharedMemory。

		// 设置共享内存大小
		shm.truncate(1024);

		{//其他进程中读取共享内存:
			shared_memory_object shm(open_only, "MySharedMemory", read_write);
			// 映射共享内存到当前进程的地址空间
			mapped_region region(shm, read_write); 
		}

		// 映射共享内存到当前进程的地址空间
		mapped_region region(shm, read_write);//使用mapped_region类将共享内存映射到当前进程的地址空间中,获取映射区域的起始地址。

		// 获取映射区域的起始地址
		void* addr = region.get_address();

		// 在共享内存中写入数据
		std::strcpy(static_cast<char*>(addr), "Hello, Boost Interprocess!");//使用strcpy函数将字符串"Hello, Boost Interprocess!"写入共享内存的起始地址。

		// 读取共享内存中的数据
		char buffer[1024];
		std::strcpy(buffer, static_cast<const char*>(addr));//使用strcpy函数将共享内存中的数据复制到buffer数组中。
		//注意,由于共享内存中存储的是原始的内存块,所以我们需要进行类型转换。

		// 打印读取到的数据
		std::cout << "Data read from shared memory: " << buffer << std::endl;

		// 删除共享内存对象
		shared_memory_object::remove("MySharedMemory");
	}
	catch (const std::exception& ex)
	{
		std::cerr << "Exception: " << ex.what() << std::endl;
		shared_memory_object::remove("MySharedMemory");
		return 1;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值