为什么 fprintf 不直接写入文件,除非使用 fflush() ?

dex*_*ous 1 c linux file-io flush buffering

我编写了一个在文件中写入值的守护进程。我观察到,当我继续在文件上写入时,文件中没有任何可见内容。另一方面,如果我使用fflush()方法,那么字符在文件中可见。为什么 fflush() 会有所不同?

Bar*_*mar 5

默认情况下,stdio 是完全缓冲的,除非它正在写入终端(在这种情况下它是行缓冲的)或 stderr(根本不缓冲)。

您可以使用该功能禁用缓冲setbuf()

setbuf(fp, NULL);
Run Code Online (Sandbox Code Playgroud)