boost 进程间通信-share memery传递字符串

3 篇文章 0 订阅

boost 进程间通信-share memery传递字符串


写入字符 writeShareMemery.cpp

   

#include<boost/interprocess/shared_memory_object.hpp>
    #include<boost/interprocess/mapped_region.hpp>
    #include <iostream>
    #include <vector>
    
    using namespace boost::interprocess;
    
    int main ()
    {
       try{
    
          char *msg = "6F2C61200071008A28F1752C666324D6EB3FEA05867852F68140FE3E51EC6D54C50954E52146200096A072209DF3D4B8635B00C28A4EC142A37C5A7B1162B6709CF1F854FE3C4D7732C3D326A6F4B0E09D65206C2B7DC0F5FC12A9B9C6721550F5C0EDBB9F463E4A248E9870EEE48928E7ED9136C3CB60575F5D52B00FB3EF97FCF076A3AB7D8B73AE58DB14CDEAE21C39BF46AD0B10EDF7ECFCEA80EF76359027209ED585792F245AB7A3CC25A9D95A10788D0FA28F9CFA451B9FA33432E225EB283842B3309D4D663DABD047CDD11C96AC0DB5A1DDC2A23AAD3E57128869B4EE34840245645DDC1F12110D67F2E53B407D585284EBA20668F9E557A4286F589CD7648B5F4A65CA60EBB35C810BE66C07160A29C49963F55F107D29B3F3EE5E1FCE2D939BF7444758113FCCE8BE2E4F03E2688132B2486F471DDE57B55E1102A631B5D6989FD7802D64BCCE06BEDD59A6CD652D59C512F21AA0E2C8983B49DB3DFB4875D03502EF1FA53231957E306B5E7080F35F0097A965919C0979F04C9DBAA8A76D2C2B4ADBF5FAC2FFBB8DD4739C6D1555AD622C0F472B149CC411C0BC767A6C85F9A9A22DB13D33AD19F40B9EA2C1488B0D59B319917336D30AB9F62E06B327E37822A8DB00AEBD6D6ED39742B695176CC518968F5FC05F172DC84CE8B4391D1FA2502FBB72B96FE0099B7EDC";
          std::cout<<"msg.size "<<strlen(msg)<<std::endl;
          boost::interprocess::shared_memory_object shdmem(boost::interprocess::open_or_create,"share_memery", boost::interprocess::read_write);
          shdmem.truncate(strlen(msg));
          boost::interprocess::mapped_region region(shdmem, boost::interprocess::read_write);
          char *msg1=static_cast<char *>(region.get_address());
          //写入共享内存
          strcpy(msg1,msg);
          getchar();
          shdmem.remove(shdmem.get_name());
          return 0;
       }
       catch(interprocess_exception &ex){
          std::cout << ex.what() << std::endl;
          return 1;
       }
    
       return 0;
    }
    

读取字符 readShareMemery.cpp

    

#include<boost/interprocess/shared_memory_object.hpp>
    #include<boost/interprocess/mapped_region.hpp>
    #include <iostream>
    #include <vector>
    
    using namespace boost::interprocess;
    
    int main ()
    {
       try{
    
          boost::interprocess::shared_memory_object shdmem(boost::interprocess::open_only,"share_memery",boost::interprocess::read_only);
          boost::interprocess::mapped_region region(shdmem, boost::interprocess::read_only);
           //读取共享内存
          char *msg1 = static_cast<char *>(region.get_address());
          std::cout<<"msg is : "<<msg1<<std::endl;
          return 0;
       }
       catch(interprocess_exception &ex){
          std::cout << ex.what() << std::endl;
          return 1;
       }
    
       return 0;
    }

 

编译

g++ writeShareMemery.cpp -o writeShareMemery -I/appstore/3rd_party/cpp/3rd_party/boost-1_66/include /appstore/3rd_party/cpp/3rd_party/boost-1_66/lib/gcc_x86_64/libboost_thread.a /appstore/3rd_party/cpp/3rd_party/boost-1_66/lib/gcc_x86_64/libboost_system.a -lpthread -ldl -lrt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值