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

相关推荐
STCNXPARM几秒前
Linux-ARM-Bootloader概述
linux·运维·arm开发·uboot·bootloader
林深现海2 分钟前
宇树 Go2 + NaVILA 全栈导航系统详解 (新手入门版)
linux·vscode·yolo·ubuntu·机器人
LUCIFER4 分钟前
[驱动进阶——MIPI摄像头驱动(三)]rk3588+OV13855摄像头驱动加载过程详细解析第二部分——DPHY驱动+CSI驱动
linux·驱动开发
小尧嵌入式9 分钟前
【Linux开发四】Linux中概念|MobaXterm和Filezilla软件使用|线程|互斥锁|读写锁
linux·运维·服务器·开发语言·数据结构
峥嵘life15 分钟前
Android16 EDLA【GTS】GtsUnofficialApisUsageTestCases存在fail项
android·linux·运维·学习
海天鹰18 分钟前
fcitx5皮肤
linux
晚风吹长发23 分钟前
初步了解Linux中的信号保存和简单使用
linux·运维·服务器·数据结构·后端·算法
林深现海23 分钟前
基于宇树 Go2 与 NaVILA 的全栈视觉导航系统深度解析
linux·vscode·yolo·ubuntu·机器人
阿豪学编程26 分钟前
【Linux】Socket网络编程
linux·服务器·网络
小张成长计划..34 分钟前
【linux】4:编辑器vim的使用
linux·编辑器·vim