2010-08-11 6 views
2

J'ai créé un boost :: message_queue par la manière suivante:Qu'est-ce que je fais de mal avec boost :: interprocess :: message_queue?

namespace bipc = boost::interprocess; 

... 

try { 
    bipc::message_queue::remove("EDBA90AC-289D-4825-98D9-F85185041676"); 

    // The below throws exception, no matter what's the name of the queue... 

    boost::shared_ptr<bipc::message_queue> mq(new bipc::message_queue(bipc::create_only, "EDBA90AC-289D-4825-98D9-F85185041676", 32767, 256)); 

    ... 
} catch (std::exception &e) { 
    std::cout << "exception: " << e.what() << std::endl; 
} 

Maintenant, je ne peux pas le faire fonctionner, puisque le mq -Création lancers francs à chaque fois que l'exception suivante

exception: invalid string position

Cela fonctionnait bien avec la version de Boost avant 1.42, mais plus maintenant. La documentation de message_queue de Boost n'a pas changé, donc pas d'aide à partir de là. Qu'est-ce que je fais mal ici?

Répondre

3

Vous ne pouvez pas nommer un mécanisme interprocess avec '-' à l'intérieur. Il est écrit dans la documentation:

* Starts with a letter, lowercase or uppercase, such as a letter from a to z or from A to Z. Examples: Sharedmemory, sharedmemory, sHaReDmEmOrY... 
* Can include letters, underscore, or digits. Examples: shm1, shm2and3, ShM3plus4... 
Questions connexes