我正在使用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);
现在我无法理解的是构造函数如何返回值?虽然它声明" 功能返回false"但afaik message_queue应该是一个构造函数。
如果它确实返回false,我可以在布尔变量中捕获它吗?
答案 0 :(得分:1)
正如当前文档所示,将抛出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