Я запускаю процесс из Win32 с помощью CreateProcess
, устанавливая свойства hStdOutput
и hStdError
STARTUPINFO
для дескрипторов труб, созданных с помощью CreatePipe
. У меня есть два потока, которые читают трубы, ожидая, когда данные станут доступными (или процесс будет завершен, и в этот момент он проверяет, что перед завершением потока нет данных).
По мере того, как данные становятся доступными, я пишу вывод для эффективного большого текстового поля.
Что происходит, результат буферизуется, поэтому процесс медленного запуска просто получает куски данных, брошенных в текстовое поле, но не "как это бывает".
Я не уверен, что это труба, которая выполняет буферизацию или что-то делать с перенаправлением.
Есть ли способ установить, что труба небуферизирована, или запустить процесс таким образом, чтобы сообщение stdout было отправлено как можно скорее?
Я тестирую тестовое приложение, которое печатает строки на одну секунду.
Here is line one
(waits one second)
Here is line two
(waits one second)
... etc