问题标签 [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 投票
7 回答
61108 浏览

c - I am not able to flush stdin

How to flush the stdin??

Why is it not working in the following code snippet?

#xA;

Now if i give the input as 11 characters, only 9 should be read but the remaining two characters in the stdin are not flushed and read again in the argq. Why?

Input: 123 456 789

Output: 123 456 89

Why am i getting this 89 as the output?

0 投票
4 回答
2341 浏览

c - fflush 和 '没有剩余磁盘空间'

我正在编写一个程序,某种数据库。当我阅读手册时,fclose(3)我发现它调用fflush(3)将缓冲区刷新FILE*到磁盘(实际上是操作系统缓冲区,但现在没关系,我们总是可以调用fsync(2))。

因为我正在编写数据库,所以很明显我想防止数据丢失。如果没有磁盘空间并且fflush(3)失败fclose(3)——我们将丢失我们的数据,因为

FILE*在错误后使用fclose()将导致未定义的行为

所以我考虑过明确使用fflush(3)before fclose(3),警告用户磁盘空间不足并fflush(3)在一段时间后调用。

我已经阅读了C标准并认为这是一个好主意。在实践中,第二次调用失败后fflush总是返回 0(没有错误),但实际上什么也不做。fsync没有帮助我(我认为数据可能保存在 RAM 中)。

在这种情况下如何防止数据丢失?也许有一些经验法则。

这是我的测试代码:

0 投票
6 回答
52577 浏览

fflush - fflush 和 fsync 的区别

我认为fsync()fflush()内部进行,所以fsync()在流上使用是可以的。但是在网络 I/O 下执行时,我得到了意想不到的结果。

我的代码片段:

但似乎_commit()没有刷新数据(我在 Windows 上尝试过,数据写在 Linux 导出的文件系统上)。

当我将代码更改为:

它刷新数据。

我想知道是否_commit()fflush(). 有什么输入吗?

0 投票
7 回答
55788 浏览

c - 使用 fflush(stdin)

因此,快速谷歌搜索fflush(stdin)清除输入缓冲区会发现许多网站警告不要使用它。然而,这正是我的 CS 教授教全班的方式。

使用有多糟糕fflush(stdin)?我真的应该放弃使用它吗,即使我的教授正在使用它并且它似乎可以完美地工作?

0 投票
1 回答
72 浏览

windows - 即使系统崩溃也能保持“几乎完整”的日志

我们有一个在 windows 和 unix 上运行的 c++ 应用程序(控制台)。此应用程序使用输出文件来输出系统调用/打印/等的详细日志文件。问题是,在某些情况下,我们可能会在添加新功能后获得 11/2 信号。

现在,每当发生这种情况时,我们都不会从日志文件中获取“几乎完整”的信息来追踪错误/问题的根源,因为当信号 11 发生时输出文件没有正确关闭。(它只是部分或零大小)

我们考虑在每个 fprintf 行打印之后添加一个刷新命令。问:

  1. 这被认为是一种很好的做法吗?
  2. fflush 在 windows 平台上运行良好吗?
  3. 在系统可能意外崩溃时保留日志文件的任何想法/其他方法?
0 投票
4 回答
804 浏览

c - fflush 和 while 循环

我一直在尝试使用 fflush 来制作进度条。为了测试 fflush,我写了下面的小代码。

当我取消注释“sleep(1);”时,它可以正常工作 但是如果它仍然被注释掉,它会以一种意想不到的方式工作。它打印第一个破折号,等待而不是打印所有剩余的 9 个并退出。

我不明白为什么它会有所作为。

0 投票
4 回答
11247 浏览

c - c中的fflush(标准输出)

就在我在 fflush(stdout) 并在 GDB 中中断时,我可以在实际打印之前知道 stdout 中有什么吗?

我怎样才能知道任何时候标准输出中有什么?

0 投票
4 回答
2847 浏览

c++ - 由于段错误,我的程序在 fflush 上崩溃,...但并非总是如此?

您知道标题中描述的这种情况的可能原因是什么?这是我的 bt 的样子:

它给了我Program terminated with signal 11, Segmentation fault.

fflush() 的包装很简单,什么都不做,只是调用fflash并检查错误(如果返回的代码是 <0 )。所以,我猜段错误是由fflash. 或者它可能在其他地方,因为??在堆栈的顶部?

操作系统:RHEL5;gcc 版本 3.4.6 20060404(红帽 3.4.6-3);使用 gdb 进行调试,其中包含最大调试信息的原始 exe。

我知道磁盘上没有空间的段错误,但这不是这种情况(因为我有一个应用程序的看门狗,它再次重新启动程序并且一切正常)。

任何想法都会有所帮助。谢谢。

编辑

**注意**不能粘贴整个代码,它是 10+ 数千个代码的一部分。此外,这在实时系统上的不同应用程序上工作了多年。这样的崩溃非常非常罕见 - 一年两次。所以,我不认为这是代码中的问题。我知道没有人可以帮助我处理这种事情,这就是为什么我只是在寻求任何想法,为什么 fflush 可能会导致段错误。

0 投票
3 回答
1231 浏览

printf - 使用 fflush(stdout) 作为 fprintf() 参数安全吗?

我遇到了这行代码:

请注意,该消息不包含任何 %-tag。

这在 Visual C++ 中安全吗?fflush() 成功返回 0,失败返回 EOF。fprintf() 将如何处理这个额外的参数?

我首先认为添加 fflush() 调用而不需要额外的行是一个奇怪的 hack。但是这样写, fflush() 调用将在 fprintf() 调用之前执行,因此它不会刷新正在打印的消息,而是等待刷新的消息,如果有的话......我是对的吗?

0 投票
2 回答
1037 浏览

c - fflush 在 Visual C++ 2010 上失败

我正在尝试运行一些代码,但fflush()出现错误:

这是代码的相关部分: