只要分配共享内存段的一部分作为缓存区,把信息复制进去,再把缓存区在共享内存中的偏移值发送给另外的进程,任务就完成啦!让我们看一个例子:
#include <boost/interprocess/managed_shared_memory.hpp>
#include <cstdlib> #include <sstream>
int main (int argc, char *argv[])
{
using namespace boost::interprocess;
if(argc == 1){
struct shm_remove
{
shm_remove() {
shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){
shared_memory_object::remove("MySharedMemory"); }
} remover;
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
std::size_t free_memory = segment.get_free_memory();
void * shptr = segment.allocate(1024);
if(free_memory <= segment.get_free_memory())
return 1;
managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
std::stringstream s;
s << argv[0] << " " << handle;
s << std::ends;
if(0 != std::system(s.str().c_str()))
return 1;
if(free_memory != segment.get_free_memory())
return 1;
}
else{
managed_shared_memory segment(open_only, "MySharedMemory");
managed_shared_memory::handle_t handle = 0;
std::stringstream s; s << argv[1]; s >> handle;
void *msg = segment.get_address_from_handle(handle);
segment.