我使用本地win32 API编写了一个Windows应用程序。我的应用程序将启动其他进程并捕获输出,并在标准错误输出中突出显示红色。
为了实现这一点,我为stdout和stderr创建了单独的管道,并在调用CreateProcess时在STARTUPINFO结构中使用它们。然后,我为每个stdout / stderr句柄启动一个单独的线程,从管道中读取并将输出记录到窗口中。
在大多数情况下,这很好用。我遇到的问题是,如果子进程快速记录到stderr和stdout,我的应用程序有时会以不正确的顺序显示输出。我认为这是由于使用两个线程从每个句柄读取造成的。
是否可能按原始编写顺序捕获stdout和stderr,同时能够区分两者?