<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。

相关推荐
无级程序员8 小时前
clickhouse创建用户,登录出错的问题,code 516
linux·服务器·clickhouse
wkd_0078 小时前
【交叉编译 | arm版Ubuntu】arm版Ubuntu(飞腾平台)开发环境、交叉编译工具安装
linux·arm开发·ubuntu·aarch64-linux·arm交叉编译工具
菜鸟厚非8 小时前
如何在 Nginx 中配置 HTTPS - Linux
linux·nginx·https
biter00889 小时前
Ubuntu 上搜狗输入法突然“消失 / 只能英文”的排查与修复教程
linux·数据库·ubuntu
WinyQ09 小时前
【DeepStream】整合出现的问题
linux·运维·网络
周公挚友9 小时前
centos 7.9 搭建nginx
linux·nginx·centos
坐怀不乱杯魂9 小时前
Linux 基础IO
linux·运维·服务器
南棱笑笑生9 小时前
20260123让天启AIO-3576Q38开发板在天启Buildroot下读写TF卡
linux·运维·服务器·rockchip
噎住佩奇9 小时前
PVC和PV等概念解释
linux·运维·服务器
笨手笨脚の9 小时前
Linux JDK NIO 源码分析
java·linux·nio