Я пытаюсь создать IPC через boost::process:pstream
. Мне нужно на самом деле два процесса демона в то время как истинный цикл, а затем заставить их общаться. Я не нашел подходящего учебника или примера для этого случая.
Я пытался написать некоторый код, но он блокирует чтение из канала. Даже сбросы не помогают.
Родитель:
bp::ipstream from_child;
bp::opstream to_child;
bp::child c("foo",
bp::std_out > from_child,
bp::std_in < to_child);
while (true)
{
to_child << 100; // let it be start
to_decoder.flush();
int result = 1;
from_child >> result;
std::cout << result;
}
test.wait();
Дочерний элемент:
int command;
while (std::cin >> command)
{
if (command == 0)
{
// do smth
std::cout << 0;
std::cout.flush();
}
}
Я ожидаю правильной работы с всегда 0 выводом. Но это приводит к блокировке родителя при чтении из from_child
.
Что я делаю не так?