renaissancer 发表于 2022-3-29 20:35

boost::interprocess::ipc::message_queue 问题探究一

记录一次使用boost的消息队列进行本机进程间通讯的问题:
1. 消息队列的名称 name 实际上就是共享内存的名字, 但是我是用 windows 下全局共享名字就会报错: 譬如:

void MessageQueues::sendMsg(const char *name) {
    using namespace boost::interprocess;
    BOOST_TRY {
            //Erase previous message queue
            message_queue::remove(name);

            //Create a message_queue.
            message_queue mq(create_only               //only create
                  , name         //name
                  , 100                     //max message number
                  , sizeof(int)               //max message size
            );

            //Send 100 numbers
            for (int i = 0 ; i < 100 ; ++i) {
                mq.send(&i , sizeof(i) , 0);
            }
            std::cout << "send success !" << std::endl;
      } BOOST_CATCH(interprocess_exception &ex) {
            std::cout << ex.what() << std::endl;
            std::cout << ex.get_error_code() << std::endl;
            std::cout << ex.get_native_error() << std::endl;
      }BOOST_CATCH_END

}
其中: name 为 const char *name = "Global\\monika";


如此就会报错:
The system cannot find the path specified.
7
3

页: [1]
查看完整版本: boost::interprocess::ipc::message_queue 问题探究一