⁨[process] problem with boost::process::on_exit

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

⁨[process] problem with boost::process::on_exit

Boost - Users mailing list

The code below outputs:

1- child about to sleep for 2s
2- child about to sleep for 4s
3- child finish sleeping for 2s
6- sleep 4s child finished
5- child finish sleeping for 4s
4- sleep 2s child finished

in a posix environment. I would expect the output to be in-order, looks like I get the wrong on_exit notification for the child processes I launch.

Q: is this a bug or am I doing something wrong ? What is the correct way to get notified of specific process termination ?


Regards,

Sandy.

code:


#include <boost/process.hpp>
#include <boost/asio.hpp>
#include <thread>
#include <iostream>

int main( int argc, char **argv )
{
if ( argc > 2 && strcmp( argv[1], "sleep" ) == 0 )
{
   auto s = atoi(argv[2]);
   std::cout << (s/2) << "- child about to sleep for " << s << "s" << std::endl;
   std::this_thread::sleep_for( std::chrono::seconds(s) );
   std::cout << (s+1) << "- child finish sleeping for " << s << "s" << std::endl;
   return 0;
}

namespace bp = boost::process;
boost::asio::io_service ios;

// launch a child that will sleep for 2s
auto c1 = bp::child( argv[0], "sleep", "2", ios,
                              bp::on_exit( [](int, const std::error_code&)
                              { std::cout << "4- sleep 2s child finished" << std::endl; }) );

// wait a bit, make sure the child startup for my test
std::this_thread::sleep_for( std::chrono::milliseconds(10) );

// launch a child that will sleep for 4s
auto c2 = bp::child( argv[0], "sleep", "4", ios,
                              bp::on_exit( [](int, const std::error_code&)
                              { std::cout << "6- sleep 4s child finished" << std::endl; }) );

// wait for the notifications
ios.run();
}
_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Loading...