У меня есть долго работающее консольное приложение Sender
, которое отправляет простой текст в STDOUT, используя небуферизованный вывод, такой как cout << "Message" << flush()
.Я хочу создать диалоговое приложение MFC (с именем Receiver
), которое запускает Sender
и может читать его вывод.Receiver
также должен уметь определять, когда Sender
умер, или иметь возможность убить Sender
, если захочет.Sender
ничего не знает о Reciever
, и я не могу изменить код Sender
.
Моей первой попыткой было создание каналов с перенаправленными STDIN и STDOUT для дочернего процесса и использование асинхронных вызовов ReadFileEx.читать данные Sender
.Это не работает правильно, и Я разместил отдельную ветку об этих конкретных проблемах.
Мой вопрос: как мне это сделать, в общих архитектурных терминах?Я не хочу, чтобы основной цикл Receiver
блокировал или опрашивал, но должен использовать некоторую разновидность Функция ожидания .