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

相关推荐
Shanxun Liao29 分钟前
CentOS 7.9 根分区 / 已经 100% 用满隐藏占用解决办法
linux·运维·centos
学好statistics和DS1 小时前
命令替换(Command Substitution)详解
linux
zimoyin1 小时前
浅浅了解下0拷贝技术
java·linux·开发语言
ba_pi1 小时前
每天写点什么2026-01-09-linux基础
linux·运维·服务器
wdfk_prog2 小时前
[Linux]学习笔记系列 -- 底层CPU与体系结构宏
linux·笔记·学习
行走的bug...2 小时前
cmake总结
linux·运维·服务器
zfxwasaboy2 小时前
DRM KMS 子系统(3)CRTC
linux·c语言
凌波粒2 小时前
Linux 面试题篇
linux·运维·服务器
Joren的学习记录2 小时前
【Linux运维疑难杂症】k8s集群创建calico网络失败
linux·运维·kubernetes
虾..2 小时前
Linux 线程控制
linux·运维·服务器