Как синхронно читать и писать в boost :: process :: child в цикле? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь создать 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.

Что я делаю не так?

...