我编写了一个在文件中写入值的守护进程。我观察到的是,当我继续写文件时,文件中没有任何内容可见。另一方面,如果我使用fflush()
方法,则字符在文件中可见。为什么fflush()有所作为?
答案 0 :(得分:2)
因为缓冲。这意味着所有写入都存储在内存中的缓冲区中,直到刷新缓冲区为止。对于printf
和朋友来说,如果它有换行符,或者您明确调用fflush
,或者当然缓冲区已满。
答案 1 :(得分:1)
默认情况下,stdio是完全缓冲的,除非它写入终端,在这种情况下它是行缓冲的,或stderr,它根本没有缓冲。
您可以使用setbuf()
功能禁用缓冲。
setbuf(fp, NULL);
答案 2 :(得分:0)