Я написал приложение для Windows, используя собственный Win32 API. Мое приложение запустит другие процессы, захватит вывод и выделит вывод stderr красным цветом.
Для этого я создаю отдельный канал для stdout и stderr и использую их в структуре STARTUPINFO при вызове CreateProcess. Затем я запускаю отдельный поток для каждого дескриптора stdout / stderr, который читает из канала и записывает вывод в окно.
В большинстве случаев это работает нормально. Проблема, с которой я сталкиваюсь, заключается в том, что если дочерний процесс записывается в stderr и stdout в быстрой последовательности, мое приложение иногда отображает вывод в неправильном порядке. Я предполагаю, что это связано с использованием двух потоков для чтения из каждого дескриптора.
Можно ли захватить stdout и stderr в исходном порядке, в котором они были записаны, и при этом различать их?