C 如何重定向stdout和stderr并保持顺序?

C 如何重定向stdout和stderr并保持顺序?,c,system,C,System,我正在为LC3汇编语言编写一个简单的代码编辑器,但遇到了一个小问题。LC3汇编程序输出有关汇编状态的基本信息,在从日志文件读回该信息后,我试图在程序中显示该信息 最初,我尝试使用system()调用LC3汇编程序,并将stdout和stderr重定向到一个文件,如下所示: system("/pathto/lc3as 1> lc3.log 2>&1"); 它输出到文件,但不保留汇编程序输出的顺序 我提出了一个丑陋的解决方案,它保留了输出的顺序,但涉及的文件IO比我想要的多得多

我正在为LC3汇编语言编写一个简单的代码编辑器,但遇到了一个小问题。LC3汇编程序输出有关汇编状态的基本信息,在从日志文件读回该信息后,我试图在程序中显示该信息

最初,我尝试使用system()调用LC3汇编程序,并将stdout和stderr重定向到一个文件,如下所示:

system("/pathto/lc3as 1> lc3.log 2>&1");
它输出到文件,但不保留汇编程序输出的顺序


我提出了一个丑陋的解决方案,它保留了输出的顺序,但涉及的文件IO比我想要的多得多,我不确定它是否在所有情况下都能工作。在这一点上,我想知道是否有更好的解决方案可以将输出路由到我的程序以保持顺序。

一旦重定向输出,输出流将从“每次写入后刷新”切换到“仅在缓冲区满时刷新”模式。您的stderr输出现在将与stdout输出完全不同步。您必须自己显式调用
fflush()
。也许你的CRT有改变模式的功能


也不要考虑修复这个问题。没有人会将进度聊天重定向到文件,只有stderr输出才重要。

什么操作系统?POSIX,比如Windows,或者..?嗯,是的,我想我可以离开它。不幸的是,stdout中的“chatter”给出了一些关于错误的信息,也就是错误发生的原因,但是我想实际的错误可能就足够了。