我有以下代码有时会产生死锁,有时不会。为什么会发生这种情况?在开始读取他的输出后,我关闭了子进程的输入流。
{
boost::process::ipstream out;
boost::process::ipstream err;
boost::process::opstream in;
boost::process::child ch("/home/ivan/CLionProjects/BoostPractise/build/Boost.Test.sort",
boost::process::std_in < in,
boost::process::std_out > out,
boost::process::std_err > err);
in << dataSet.size();
std::for_each(dataSet.begin(),dataSet.end(),
[&](int el){in << el << ' ';});
in.close();
auto t_start = std::chrono::high_resolution_clock::now();
ch.wait_for(std::chrono::duration(std::chrono::seconds(TIME_LIMIT)));
}