问题标签 [fflush]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
209046 浏览

c - 在 C 中刷新缓冲区

fflush()即使它是输出流,也不应该用于刷新缓冲区?

它有什么用?我们一般如何刷新缓冲区?

0 投票
3 回答
16911 浏览

c++ - 强制将文件写入磁盘

我目前正在实施一个 ping/pong 缓冲方案来安全地将文件写入磁盘。我在 Linux/CentOS 机器上使用 C++/Boost。现在我面临强制将文件实际写入磁盘的问题。无论文件系统(ext3 / ext4)/ SO自定义规则/ RAID控制器/硬盘控制器的所有缓存策略如何,都可以这样做吗?

最好使用普通的 fread()/fwrite()、c++ ostream 还是 boost 文件系统?

我听说简单地刷新文件 (fflush()) 并不能保证实际写入

0 投票
1 回答
1360 浏览

c - C:同步两个文件指针指向同一个文件

我需要两个文件指针 ( FILE *) 一起操作。一种是应用追加操作,另一种是用于读取和覆盖。

我需要从一个指针附加到文件以被另一个文件指针识别,以便另一个文件指针可以正确读取和覆盖这个附加数据。

为了同步数据,似乎fflush()在附加文件指针上使用是有效的(至少对于读取它是有效的),但这是实现我想要的正确方法并且它是可移植的吗?

谢谢你。

0 投票
1 回答
6937 浏览

c - 即使使用 fflush 也会跳过 scanf

我有一个scanf不接受输入的。即使变量未初始化,该值也会自动为零。被scanf跳过:

程序运行时,立即显示“choice is 0”。

上面的代码片段取自此代码中的 drop() 函数:

fflush似乎没有帮助。有任何想法吗?

0 投票
1 回答
234 浏览

c - IO 重定向和缓冲区问题,fflush 和 c

对于我的班级,我们将实现一个带有输出重定向的 shell。我的输出重定向工作正常,除了我的第一个命令总是损坏请参阅:

但是之后的每个命令似乎都很好。我使用什么技术来查找导致此问题的错误?

我认为这与没有正确冲洗有关。我把它洒在我的代码周围(这很愚蠢),看看它在循环期间是否有帮助,但没有。我还尝试打印出我的 OrderedIds 列表,该列表只是一个命令列表,用于检查是否可以在任何地方找到 H<@?4 ,但即使我初始化它,它也不起作用。

谢谢你的帮助。

0 投票
2 回答
1161 浏览

c - C,不同的 GCC,fflush() 不工作?

我是一个初学者程序员。我有一个不允许输入浮点数或字符的函数。它在 gcc 3.4.2 上运行良好,但现在我更新到 4.7.1 并且无法正常运行。它现在仅适用于第一个输入 a[0]。如果我输入让我们说'x',它会显示“错误输入”,但是如果我输入例如'1' for a[0],然后输入'x' for a[1],它仍然会说 Input OK and将“1”分配给 a[1];我怎样才能解决这个问题?谢谢!

0 投票
1 回答
1328 浏览

c++ - FILE 什么时候刷新?

我在 Windows 下有一个很好的旧 C FILE 文件描述符,输出流使用它来写入数据。我的问题很简单,但我找不到答案:

假设我不调用 fflush,内容何时刷新到光盘?

流不断接收数据,并且似乎经常刷新内容,但是刷新它的规则是什么?

0 投票
1 回答
1070 浏览

stdout - 磁盘已满时如何避免标准输出上的 fflush 挂起?

我遇到磁盘已满且程序挂起的情况,因为在 stdout 上使用了 fflush。我已经写了一个小代码来模拟这个问题。我们必须将这个程序的标准输出重定向到磁盘中已经满的文件。

这段代码永远挂起。我尝试将 fcntl 与 O_NONBLOCK 一起用于标准输出。即使这样也行不通。请注意,我不能在此处使用 write 系统调用,但这可以避免磁盘已满时出现这种挂起问题。由于我的系统在许多地方广泛使用库调用,如果我只在这个地方使用 write 系统调用,它会以混合方式创建输出。谁能建议如何避免挂起?我也试过fsync,fdatasync。这些功能也一样。

0 投票
1 回答
3461 浏览

c - 是否可以使用 fseek(stdin,1,SEEK_SET) 或 rewind(stdin) 来刷新输入缓冲区,而不是使用不可移植的 fflush(stdin)?

由于我发现fflush(stdin)不是一种可移植的方式来处理熟悉的“换行符潜伏在输入缓冲区中”的问题,所以当我不得不使用时,我一直在使用以下方法scanf

但是今天我偶然发现了我从cplusplus.com 在 fflush 上注意到的这条线:

fflush()...在为更新而打开的文件中(即,为读取和写入而打开),应在执行输入操作之前在输出操作之后刷新流。这可以通过重新定位(fseek、fsetpos、rewind)或显式调用 fflush 来完成

事实上,我之前已经读过很多次了。所以我想确认我是否可以在 之前简单地使用以下任何一个来实现与支持时scanf()相同的目的:fflush(stdin)

PS rewind(stdin)似乎很安全并且可以刷新缓冲区,我错了吗?

fseek(stdin,0,SEEK_SET)如果我们正在谈论,我应该提到的错误stdin,因为在这种情况下我们不能使用 0 或返回的偏移量以外的任何偏移量ftell()

0 投票
1 回答
172 浏览

c - 该代码中没有 fflush 有什么区别吗?

cpp reference中,它声称 fflush 是:

使输出文件流与文件的实际内容同步。

确实,我不明白这是什么意思。我只是想知道,在那段代码中,如果我取出 fflush,有什么区别吗?

我测试了一下,好像有一点点不同,但是我找不到模式。谁能为我详细解释一下?提前致谢。