Итак, я сейчас использую boost::process::ipstream
для чтения с stdout
ребенка.Программа, протокол которой я пытаюсь реализовать, никоим образом не разграничивает поток, поэтому я не уверен, как мне поступить с чтением ответов (поскольку нет четкого токена «конца ответа», такого как символ новой строкии т. д.)
Как с этим справиться?
Я могу успешно прочитать подстроки ответа, если просто напишу in.read(buffer, x);
, где x
- это какое-то значение меньшеили равна длине ответа.Однако, если я пытаюсь прочитать весь ответ через определенный размер буфера, он просто блокируется при попытке прочитать окончательный кусок буфера.
Я посмотрел, есть ли какие-нибудь хакерские приемы, которые стоит попробовать, напримеркакой-то назначенный токен, который программа будет возвращать пользователю - так что вы можете использовать его в качестве разделителя.До сих пор я ничего не нашел.
Любое руководство будет высоко ценится.
Спасибо.