i am trying to redirect both stdin and stdout of a child process. want to fill the stdin of the process with binary data from buffers and read that,(but for now i only need to know how much is written to stdout)
namespace bp = boost::process;
bp::opstream in;
bp::ipstream out;
bp::child c(Cmd.c_str(), bp::std_out > out, bp::std_in < in);
in.write((char*)buffer,bufferSize);
integer_type totalRead = 0;
char a[10240];
while (out.read(a,10240)) totalRead += out.gcount();
c.terminate();
write looks to be successful but program got stuck in reading-while loop, process(both child and parent) remains idle during this
Working Code, looks like i have to close the internal pipe to set the child's stdin eof(child reads stdin until eof (in my case)) :
namespace bp = boost::process;
bp::opstream in;
bp::ipstream out;
bp::child c(Cmd.c_str(), bp::std_out > out, bp::std_in < in);
in.write((char*)buffer,bufferSize);
in.pipe().close();
integer_type totalRead = 0;
char a[10240];
while (out.read(a,10240)) totalRead += out.gcount();
c.terminate();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With