#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<error.h>
#include<errno.h>
#include<unistd.h>
#include<strings.h>
#include<stdbool.h>

#include<sys/stat.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
int main(int argc,char **argv)
{
fputs("to stdout",stdout);//行缓冲,只有字符串后面加油‘\n’,才会显示到屏幕
fputs("to stderr",stderr);//无缓冲,直接显示到屏幕
FILE *fp = fopen("a.txt","w");//全缓冲,一般为4k,windows为1k..
if(fp == NULL)
{
fprintf(stderr,"fopen()%s failed:%s","a.txt",strerror(errno));
exit(0);
}
fputs("to a.txt",fp);
pause();

fflush(fp);//强制刷新全缓冲。
// return 0;
}

----------------------------------------------

几条刷新注意:

关于标准IO缓冲区
================================
1,不缓冲(标准出错流stderr)
1.1 一旦缓冲区中有数据,立即刷新。

2,全缓冲(普通文件)
2.1 一旦把缓冲区填满,立即刷新(做练习:检测全缓冲的大小)
2.2 调用fflush()强制刷新。
2.3 程序正常退出时,立即刷新。
2.3.1 在main函数中return
2.3.2 在任意地方调用exit()/_exit()/_Exit()
2.3.3 在最后一条线程中调用pthread_exit()
2.4 调用fclose()关闭文件时,立即刷新。
2.5 调用setvbuf()/setbuf()更改缓冲区类型时,立即刷新。

3,行缓冲(标准输出流stdout)
3.1 一旦把缓冲区填满,立即刷新(做练习:检测全缓冲的大小)
3.2 调用fflush()强制刷新。
3.3 程序正常退出时,立即刷新。
3.3.1 在main函数中return
3.3.2 在任意地方调用exit()/_exit()/_Exit()
3.3.3 在最后一条线程中调用pthread_exit()
3.4 调用fclose()关闭文件时,立即刷新。
3.5 调用setvbuf()/setbuf()更改缓冲区类型时,立即刷新。
3.6 一旦遇到'\n'

stderr,stdout,a.txt缓冲区别的更多相关文章

  1. 【Python】【Head First Python】【chapter1】2 - sys.stdout 和 print 的区别

    sys.stdout 和 print 的区别 首先,通过 help(print) 得到print内建函数的参数 Help on built-in function print in module bu ...

  2. stdout 与 stderr 的区别

    stdout 与 stderr 的区别 一直没有注意 stdout 与 stderr 的区别,以为只是不同的描述方式.看来不是这样的. stdout 主要处理的是使用者输出 stderr 主要处理的错 ...

  3. 标准输出中stderr和stdout的区别

    一.首先介绍一下三者printf,sprintf,fprintf的功能 1,printf就是标准输出,在屏幕上打印出一段字符串来. 2,sprintf就是把格式化的数据写入到某个字符串中.返回值字符串 ...

  4. stderr和stdout详细解说

    今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...

  5. stderr 和stdout

    今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...

  6. stderr和stdout(printf、fprintf、sprintf)(转)

    本文转自:http://www.cnblogs.com/zhangyabin---acm/p/3203745.html 先区分一下:printf,sprintf,fprintf. 1,printf就是 ...

  7. stderr和stdout详细解说(转)

    今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...

  8. C语言中的stdin,stdout,stderr[转]

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

  9. 五、stdout,stdoin和stderr

    stdout,stdin和stderr分别是标准输出流.标准输入流和标准错误流,当一个用户进程被创建的时候,系统会自动为该进程创建这三个数据流,默认情况下这三个流是在终端上表现出来的.可以使用fpri ...

随机推荐

  1. web框架前言与学生数据库系统(附1.0源码)

    对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def f1(request): ""&quo ...

  2. sizeof(extern类型数组)

    error:  #70: incomplete type is not allowed 用sizeof计算数组大小,编译器提示不允许使用不完整的类型.在keil上编译直接报错,拿到vs2010上编译可 ...

  3. CPU频率

    CPU频率 CPU频率,就是CPU的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称. 概念 CPU频率,就是CPU的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的 ...

  4. 如何安装 Composer

    下载 Composer 安装前请务必确保已经正确安装了 PHP.打开命令行窗口并执行 php -v 查看是否正确输出版本号. 打开命令行并依次执行下列命令安装最新版本的 Composer: php - ...

  5. Schema与数据类型优化

    良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询数据来设计schema,这往往需要权衡各种因素. MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要. 更小的通 ...

  6. JavaSE-反射-获取类或者对象的四种方法

    1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classlo ...

  7. linux_Nginx日志

    错误信息日志配置: 日志文件默认:/application/nginx/logs/erroe.log error_log logs/error.log error; # 不写默认就有,默认error, ...

  8. SVN同步时忽略特定文件或文件夹

    在MyEclipse中使用SVN同步的时候,经常会提示一些比如.classpath等不需要同步的配置文件,可以通过设置来忽略这一部分的文件或者文件夹. 1.选择菜单Window→Preferences ...

  9. node 在控制台打印有色彩的输出

    在学习 node 过程中,因为没有找到有断点的调试方法,只能退而次之,在控制台打印调试. 但整个控制台的输出都是一种颜色,有时候很难找到自己需要的信息,这时,有颜色的打印就会帮上很大的忙. conso ...

  10. 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器

    1.天生荣耀:ARM Cortex-M处理器由来 ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器 ...