// boost_main.cc
#include <iostream>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
using namespace boost::interprocess;
using namespace std;
int main(int argc, const char *argv[]) {
cout << "boost main cc" << endl;
string share_name = "my_shared_memory";
// 尝试删除共享内存对象 (同时判断某个共享内存是否存在)
if(shared_memory_object::remove(share_name.c_str())) {
// cout << "Shared memory object exists" << endl;
} else {
// cout << "Shared memory object does not exist" << endl;
}
string content = "hello, tqz";
shared_memory_object shm(create_only, share_name.c_str(), read_write);
// 设置共享内存大小
shm.truncate(sizeof(content));
// 创建映射区域
mapped_region region(shm, read_write);
// 获取映射区域地址
void* addr = region.get_address();
// 写入数据到共享内存中
std::strcpy(static_cast<char*>(addr), content.c_str());
std::cout << "write message: " << static_cast<char*>(addr) << std::endl;
return 0;
}
// boost_interprocess.cc
#include <iostream>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
using namespace boost::interprocess;
using namespace std;
int main(int argc, const char *argv[]) {
cout << "boost interprocess cc" << endl;
std::string shmName = "my_shared_memory";
shared_memory_object shm(open_only, shmName.c_str(), read_write); // 打开共享内存对象
mapped_region region(shm, read_write); // 映射共享内存到当前进程的地址空间中
// 读取共享内存中的内容
char* data = static_cast<char*>(region.get_address());
std::cout << "Shared memory content: " << data << std::endl;
return 0;
}