gpt4 book ai didi

c - printf 刷新问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:45 25 4
gpt4 key购买 nike

我正在修改一个大的 C 代码。出于测试目的,我不得不将标准输出重定向到一个文件。为此,我使用了这段代码:fp=freopen("OUT", "w",stdout) 现在所有 printf 调用都将写入 fp。这是一个很大的代码,所以我不想搜索所有的导出点并在每次导出前关闭文件。如果不关闭文件会怎样?有没有办法让它在我每次向文件写入内容时自动刷新?

最佳答案

setvbuf 可能是要走的路:

setvbuf (fp, NULL, _IONBF, 0);

这将完全关闭缓冲。为不可避免的性能下降做好准备。

您还需要注意,在许多系统中,这只会在运行时库级别刷新,不一定会刷新到存储介质,因为 UNIX fsync(fileno(fp)) 会尝试做。

因此,虽然您的程序 崩溃没关系,但如果整个操作系统陷入困惑,那将无济于事。但是你可能会遇到比丢失一点输出更大的问题:-)


但是,除非您的程序 崩溃,否则您可能不应该担心它。 ISO C99 在某种程度上说,exit() 并因此从 main() 返回的操作之一是:

Next, all open streams with unwritten buffered data are flushed, all open streams are closed, ...

所以无论在那种情况下,你的数据都会被输出。

关于c - printf 刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com