繁体   English   中英

即时将程序输出重定向到文件,而无需从批处理文件缓冲

[英]Instant redirect program output to file without buffering from batch file

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

call myProgram.exe parms > myFile.txt

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

stdio.h函数正在缓冲。 参见setvbuf 缓冲可能是特定于操作系统的,并且在重定向时可能会更改(例如,因为内部isatty(3)可以在printf等内部使用)。

请注意,此缓冲实际上是有用的,通常可以大大提高输出速度。

最简单的方法是不时调用fflush(3) 否则,在stdout上使用_IOFBF调用setvbuf

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM