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