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