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

相关推荐
HalvmånEver1 小时前
Linux:命名管道实现IPC(进程间通信七)
linux·运维·服务器·ipc·命名管道·管道pipe
正在学习前端的---小方同学7 小时前
Harbor部署教程
linux·运维
Sean X8 小时前
Ubuntu24.04安装向日葵
linux·ubuntu
IT 乔峰10 小时前
脚本部署MHA集群
linux·shell
dz小伟10 小时前
execve() 系统调用深度解析:从用户空间到内核的完整加载过程
linux
Mr_Xuhhh10 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
JoyCheung-10 小时前
Free底层是怎么释放内存的
linux·c语言
旖旎夜光11 小时前
Linux(9)
linux·学习
喵了meme12 小时前
Linux学习日记24:Linux网络编程基础
linux·网络·学习
whlqjn_121112 小时前
linux下使用SHC对Shell脚本进行封装和源码隐藏
linux·centos