首页 > 其他分享 >printf的缓冲机制

printf的缓冲机制

时间:2023-02-11 16:57:47浏览次数:52  
标签:int 缓冲 printf ret child 机制 hehe

printf的缓冲机制

参考链接:https://www.cnblogs.com/sinferwu/p/12426410.html

printf是C库函数,是对系统调用write的封装,有其特有的缓冲机制。

printf函数实际上只是输出到了标准输出缓冲队列上,并没有实实在在的打印到屏幕上,标准输出是行缓冲机制,也就是说,遇到\n,就会刷新缓冲区,输出到屏幕上

例如有两个程序:

#include<stdio.h>
#include<unistd.h>
int main(){
  printf("hehe\n");
  int ret = fork();
  if(ret==0){	//child
  	printf("I am child\n");
  }
  else if(ret<0) {
  	printf("Error\n");
  }
  else {
  	printf("I am father\n");
  }
  return 0;
}
// 运行结果1: 
// hehe
// I am father
// I am child


#include<stdio.h>
#include<unistd.h>
int main(){
  printf("hehe");
  int ret = fork();
  if(ret==0){
    //child
    printf("I am child\n");
  }
  else if(ret<0){
    printf("Error\n");
  }
  else{
    printf("I am father\n");
  }
  return 0;
}
// 运行结果2:
// heheI am father
// heheI am child


在第一个程序中fork之前已经输出,并刷新了缓冲区,因此子进程不会会继承父进程的这个内容,而在第二个程序中,由于没有遇到换行符,所以字符串"hehe"还在缓冲区中,这时子进程的缓冲区里有也有了这个字符串,所有第二个程序会多打印个"hehe"

内核的缓存是在驱动做的,所有调用printf的程序都共享,但是在应用层的c库也做了缓存,这部分缓存是程序独立的

标签:int,缓冲,printf,ret,child,机制,hehe
From: https://www.cnblogs.com/Yuqi0/p/17111990.html

相关文章

  • JQuery插件机制
    jQuery-插件机制增强JQuery的功能1.实现方式:1.$.fn.extend(object)增强通过Jquery获取的对象的功能$("#id")2.$.extend(object)......
  • day06-SpringMVC底层机制简单实现-02
    SpringMVC底层机制简单实现-02https://github.com/liyuelian/springmvc-demo.git4.任务3-从web.xml动态获取容器配置文件4.1分析任务3:MyDispatcherServlet(自定义的......
  • module_init机制
    模块代码有两种运行方式,一是静态编译连接进内核,在系统启动过程中进行初始化;一是编译成可动态加载的module,通过insmod动态加载重定位到内核。这两种方式可以在Makefile中通......
  • RPC优雅关闭机制详解
    1关闭为什么有问题?系统为啥非要拆分?更方便、更快速迭代业务,但也得经常更新应用系统,时不时还老要重启服务器。重启服务过程中,RPC怎么做到让调用方系统不出问题?2上线流程当......
  • 4.5栈、队列以及环形缓冲区
        栈、队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时的保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法......
  • python的垃圾回收机制
    1.垃圾回收机制的算法分类python垃圾回收算法通常有三类:引用计数,标记清除和分代回收,主要以引用计数为主,标记清除和分代回收为辅 2.对象的存储方式——refchain环......
  • 79、异常机制
    当认证微服务通过数据校验后,要远程调用用户/会员模块进行真正的注册。我们要检查用户提交的用户名和手机号等在数据库是否已经存在了。我们可以通过boolean值判断是否已经......
  • 4.1内存的物理机制很简单
       内存实际上是一种名为内存IC的电子元件。虽然内存IC包括DRAM、SRAM、ROM等多种形式,但从外部来看,基本机制都是一样的。内存IC中有电源、地址信号、数据信号、控制......
  • RPC异常重试机制详解
    1异常重试的意义发起一次RPC调用,调用远程的一个服务,如用户的登录操作,先对用户的用户名以及密码进行验证,验证成功后,获取用户基本信息。通过远程的用户服务获取用户基本信息......
  • 内存泄露 内存释放 和垃圾回收机制
    答:当使用一个参数,会进行内存的分配,内存的使用,内存的释放。什么会导致内存泄露答:1.意外的全局变量=》必须确保在使用过后将它设置为null2定时器=》清除定......