2010-09-30 3 views
1

Je crée un programme et je fais le plus possible de manière asynchrone.Boost :: processus processus async_wait

J'ai besoin d'exécuter un programme et quand ce programme se termine, il appelle une fonction de rappel. J'ai trouvé une version de boost :: process et j'ai décidé d'utiliser, mais il semble qu'il y ait l'exemple mais n'a pas pu trouver l'implémentation dans la source que j'ai téléchargée, quelqu'un pourrait-il me donner un coup de main?

exemple de code http://www.highscore.de/boost/gsoc2010/process/user_guide.html#boost_process.user_guide.waiting et télécharger la source boost :: processus ici www.highscore.de/cpp/process/

Je dois créer une mise en œuvre ou là, mais je suis arrivé les sources du mauvais endroit?

Ceci est un exemple de code pour résoudre mon problème.

boost::asio::io_service ioservice; 

void end_wait(const boost::system::error_code &ec, int exit_code); 

int main() 
{ 
    std::string exe = boost::process::find_executable_in_path("hostname"); 
    std::vector<std::string> args; 
    boost::process::child c = boost::process::create_child(exe, args); 
    boost::process::status s(ioservice); 
    s.async_wait(c.get_id(), end_wait); 
    ioservice.run(); 
} 

void end_wait(const boost::system::error_code &ec, int exit_code) 
{ 
    if (!ec) 
    { 
#if defined(BOOST_POSIX_API) 
     if (WIFEXITED(exit_code)) 
      exit_code = WEXITSTATUS(exit_code); 
#endif 
     std::cout << "exit code: " << exit_code << std::endl; 
    } 
} 

Désolé mon mauvais anglais Cordialement Bruno

Répondre

0

Boost.Process n'est pas une bibliothèque officielle de Boost. Je ne trouve aucune référence au travail en cours sur cette bibliothèque sur le blog de l'auteur plus tard que this which is two years old.

Je ne suis pas sûr où est le «bon endroit» pour obtenir le code étant donné ce pronostic incertain. Vous pouvez demander sur le Boost forums - peut-être qu'il y a une version de test en cours/de travail dans leur référentiel que vous pouvez récupérer.