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

相关推荐
飞Link15 小时前
【MySQL】Linux(CentOS7)下安装MySQL8教程
linux·数据库·mysql
随祥15 小时前
网络开源工具
linux
北京迅为16 小时前
【北京迅为】iTOP-4412精英版使用手册-第七十八章 Qt界面切换
linux·人工智能·嵌入式·4412
Tipriest_16 小时前
linux中的文本分接流tee命令介绍
linux·服务器·数据库
阿拉伯柠檬16 小时前
MySQL内置函数
linux·数据库·mysql·面试
Xの哲學17 小时前
Linux CFS 调度器深度解析
linux·服务器·算法·架构·边缘计算
大聪明-PLUS17 小时前
关于 systemd 和桌面应用程序自动启动
linux·嵌入式·arm·smarc
松涛和鸣17 小时前
DAY42 SQLite3 : Dictionary Import and Data Query Implementation with C Language
linux·c语言·数据库·单片机·网络协议·sqlite
小馬佩德罗17 小时前
如何将x264 x265的动态库编译入Linux系统中的FFmpeg源码 - x265库编译
linux·ffmpeg·x265
飞Link18 小时前
【Anaconda】Linux(CentOS7)下安装Anaconda教程
linux·运维·python