ネイティブの win32 API を使用して Windows アプリケーションを作成しました。私のアプリは他のプロセスを起動し、出力をキャプチャして stderr 出力を赤で強調表示します。
これを実現するために、stdout と stderr 用に別のパイプを作成し、CreateProcess を呼び出すときに STARTUPINFO 構造体でそれらを使用します。次に、パイプから読み取り、出力をウィンドウに記録する stdout/stderr ハンドルごとに個別のスレッドを起動します。
ほとんどの場合、これで問題なく動作します。私が抱えている問題は、子プロセスが stderr と stdout にすばやく連続してログを記録すると、アプリが間違った順序で出力を表示することがあるということです。これは、2 つのスレッドを使用して各ハンドルから読み取ることが原因であると想定しています。
2 つを区別しながら、stdout と stderr を元の順序でキャプチャすることは可能ですか?