我有使用命令C
打印消息的程序。printf
从批处理文件中我调用我的程序
call myProgram.exe parms > myFile.txt
打印消息时,我myFile
每次(或几乎每次)都需要更新。myProgram
现在,在程序完成执行之前,我看不到文件中的任何内容,可能是因为一些缓冲。这个缓冲问题是来自我的C
程序、来自我的batch file
还是来自操作系统,我该如何解决?
我有使用命令C
打印消息的程序。printf
从批处理文件中我调用我的程序
call myProgram.exe parms > myFile.txt
打印消息时,我myFile
每次(或几乎每次)都需要更新。myProgram
现在,在程序完成执行之前,我看不到文件中的任何内容,可能是因为一些缓冲。这个缓冲问题是来自我的C
程序、来自我的batch file
还是来自操作系统,我该如何解决?
stdio.h
功能正在缓冲。请参阅setvbuf。缓冲可能是特定于操作系统的,并且在重定向时可能会发生变化(例如,因为内部isatty(3)可以在内部使用printf
等......)。
请注意,这种缓冲实际上很有用,并且通常会大大加快输出速度。
最简单的方法是不时调用fflush(3) 。否则调用on setvbuf
。_IOFBF
stdout
setvbuf
在程序开始附近使用更简单。fflush
但是,在适当的地方调用可能会更有效(因为使用更大的缓冲区应该更快)。