How do I spawn multiple child processes that should run asynchronously? Do I use a vector
of child processes? I'm afraid the code below doesn't do what I'm trying to accomplish. Any other suggestions for a different way to pass arguments to the child process is also welcome!
#include <iostream>
#include <string>
#include <sstream>
#include "boost/process.hpp"
int main()
{
namespace bp = boost::process;
std::string child_process_name = "child_process";
std::cout << "main_process: before spawning" << std::endl;
int num_processes = 5;
for (int i = 0; i < num_processes; ++i)
{
std::cout << "main_process: spawning child " << i << std::endl;
std::stringstream ss;
ss << i;
std::string is;
ss >> is;
bp::child c(child_process_name, std::vector<std::string> {is});
c.join();
}
std::cout << "main_process: waiting for children" << std::endl;
std::cout << "main_process: finished" << std::endl;
return 0;
}