标签: c batch-file stdout
我有C程序,其中使用printf命令打印消息。从批处理文件中我用
C
printf
call myProgram.exe parms > myFile.txt
我需要在myFile打印邮件时每次(或几乎每次)更新myProgram。现在,在程序完成执行之前,我无法看到任何文件,可能是因为有些缓冲。我的C程序,我的batch file或操作系统是否存在此缓冲问题,我该如何解决?
myFile
myProgram
batch file
答案 0 :(得分:1)
stdio.h函数正在缓冲。见setvbuf。缓冲可能是特定于操作系统的,并且可能在重定向时发生变化(例如,因为内部isatty(3)可以在printf等内部使用...)。
stdio.h
请注意,这种缓冲实际上很有用,并且通常会大大加快输出速度。
最简单的方法是不时致电fflush(3)。否则,请setvbuf上的_IOFBF与stdout联系。
setvbuf
_IOFBF
stdout
在程序开头附近使用setvbuf更简单。但是,在适当位置调用fflush可能会更有效(因为使用更大的缓冲区应该更快)。
fflush