<Linux> 缓冲区谁维护?

缓冲区是谁提供的?

来看一段代码

c 复制代码
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    const char *str1 = "a";
    printf("%s", str1);

    const char *str2 = "b";
    write(1, "b", strlen(str2));
    fork();

    return 0;
}

运行结果如下

现象:

  • b先打印

  • b只打印1次,a打印了两次

因为这个缓冲区是语言提供的,所以没有刷新时就会把数据留在缓冲区等待刷新,而系统调用没有经过缓冲区,所以直接打印,因为C提供了缓冲区,fork之后创建了子进程,缓冲区内部的数据属于进程上下文数据,给子进程也拷贝了一份,所以子进程也会打印a。

相关推荐
小鹏linux1 小时前
【像素贪吃蛇小游戏】部署文档-linux篇
linux·运维·服务器
DD-WL1 小时前
PKI&&数字证书相关概念
linux·网络协议
路溪非溪1 小时前
Linux驱动中的红外遥控子系统
linux·arm开发·驱动开发
成都犀牛1 小时前
Ubuntu配置nginx
linux·nginx·ubuntu
qdprobot2 小时前
开源的在线串口调试助手支持macOS苹果电脑Windows系统Linux 浏览器webSerial
linux·运维·服务器·人工智能·mixly·小智ai·webserial
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]namespace
linux·笔记·学习
无限大.2 小时前
为什么“DevOps“能提高软件开发效率?——从开发到运维的融合
linux·运维·devops
饭九钦vlog2 小时前
dns形式的floodddos命令
linux·运维·服务器
雪碧聊技术2 小时前
centos7如何安装redis?
linux·centos·安装redis
旖旎夜光3 小时前
linux(8)(下)
linux·学习