簡體   English   中英

如何捕獲boost message_queue返回false

[英]how to catch boost message_queue returns false

我正在使用boost :: interprocess :: message_queue,並根據http://www.boost.org/doc/libs/1_35_0/doc/html/boost/interprocess/message_queue.html上給出的定義

message_queue(open_only_t open_only, const char * name);
  • 打開以前創建的名為“name”的進程共享消息隊列。 如果先前未創建或沒有可用資源,則該函數返回false。

現在我無法理解的是構造函數如何返回值? 雖然它聲明“ 函數返回false”但是afaik message_queue應該是一個構造函數。

如果它確實返回false,我可以在布爾變量中捕獲它嗎?

正如當前文檔所示,將拋出boost::interprocess::interprocess_exception

所以,

using namespace boost::interprocess;
try {
    //Create a message_queue. If the queue
    //exists throws an exception
    message_queue mq
        (create_only         //only create
         ,"message_queue"     //name
         ,100                 //max message number
         ,100                 //max message size
        );
} catch (interprocess_exception const& ipe)
{
    std::cerr << "Error: #" << ipe.get_error_code() << ", " << ipe.what() << "\n";
}

當運行兩次時,將打印

Error: #9, File exists

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM