7得票1回答
可以使用fseek(stdin,1,SEEK_SET)或者rewind(stdin)来清空输入缓冲区,而不用使用不可移植的fflush(stdin)吗?

自从我发现fflush(stdin)不是处理输入缓冲区中的换行符问题的可移植方式后,每当我必须使用scanf时,我就会使用以下方法: while((c = getchar()) != '\n' && c != EOF); 但是今天我偶然发现了这一行话,它来自cpluspl...

73得票6回答
fflush和fsync之间的区别

我以为fsync()会在内部执行fflush(),所以在流上使用fsync()是可以的。但是当在网络I/O下执行时,我得到了一个意外的结果。 我的代码片段:FILE* fp = fopen(file, "wb"); /* multiple fputs() calls like: */ fpu...

11得票1回答
文件何时被刷新?

我在Windows下有一个良好的旧的C FILE文件描述符,它用于由输出流将数据写入文件。我的问题很简单,但我找不到答案: 如果我不调用fflush,那么内容何时被刷新到磁盘上? 该流不断接收数据,并且似乎很经常刷新内容,但是什么是刷新的规则呢?

15得票2回答
为什么在写入stderr之前需要使用fflush清空stdout缓冲区?

我正在阅读《UNIX网络编程:套接字API》这本书,并且在示例代码中,他们有一个包含以下行的错误处理函数:fflush(stdout); /* in case stdout and stderr are the same */ fputs(buf, stderr); fflush(st...

7得票3回答
强制将文件写入磁盘

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

79得票1回答
在C语言中清空缓存

fflush()不应该用于刷新缓冲区,即使它是一个输出流吗? 它有什么用途?一般我们如何刷新缓冲区?

18得票3回答
理解fflush()的必要性及其相关问题

下面是使用 fflush() 的示例代码:#include <string.h> #include <stdio.h> #include <conio.h> #include <io.h> void flush(FILE *stream); ...

8得票1回答
在bash中,如何强制刷新打印到终端的不完整行?

我正在编写一个脚本,类似于以下操作: echo -n "Doing stuff, wait for it... " do_stuff (($?==0)) && echo SUCCESS || echo FAILURE 抱歉,我的bash技能不太好。无论如何,问题是在do_...

11得票5回答
在C语言中使用fgets()函数后清除输入缓冲区

#include <stdio.h> int main() { char name[10]; for(int i=0;i<=10;i++) { printf("Who are you? "); if(fgets(name,10,stdin)!=NU...

45得票5回答
一个程序能否同时在同一个文件指针(FILE*)上调用fflush()函数?

如果多个线程同时在相同的FILE*变量上调用fflush(),会发生什么不良情况(如未定义行为、文件损坏等)? 澄清:我不是指并发写文件,而是指并发刷新文件。 这些线程不会同时读取或写入文件(它们只在关键区域内一个接一个地写入文件)。他们只会在关键区域外部进行刷新,以便更快释放关键区域,让...