1

我有使用命令C打印消息的程序。printf从批处理文件中我调用我的程序

call myProgram.exe parms > myFile.txt

打印消息时,我myFile每次(或几乎每次)都需要更新。myProgram现在,在程序完成执行之前,我看不到文件中的任何内容,可能是因为一些缓冲。这个缓冲问题是来自我的C程序、来自我的batch file还是来自操作系统,我该如何解决?

4

1 回答 1

1

stdio.h功能正在缓冲。请参阅setvbuf。缓冲可能是特定于操作系统的,并且在重定向时可能会发生变化(例如,因为内部isatty(3)可以在内部使用printf等......)。

请注意,这种缓冲实际上很有用,并且通常会大大加快输出速度。

最简单的方法是不时调用fflush(3) 。否则调用on setvbuf_IOFBFstdout

setvbuf在程序开始附近使用更简单。fflush但是,在适当的地方调用可能会更有效(因为使用更大的缓冲区应该更快)。

于 2013-09-04T11:06:57.723 回答