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

相关推荐
躲猫猫的喵喵12 小时前
Ubuntu2204降内核版本
linux·运维·服务器·ubuntu
昌sit!12 小时前
Linux系统性基础学习笔记
linux·笔记·学习
zdslovezy12 小时前
CentOS 系统升级 OpenSSH 和 OpenSSL 的完整方案
linux·运维·centos
HIT_Weston13 小时前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
cccccc语言我来了13 小时前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
ben9518chen14 小时前
嵌入式Linux C语言程序设计九
linux·c语言
颜大哦15 小时前
linux安装mysql
linux·运维·mysql·adb
来知晓15 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器
大聪明-PLUS15 小时前
嵌入式 Linux 初学者指南 – 第 2 部分
linux·嵌入式·arm·smarc
feng_blog668816 小时前
【信创系统】统信UOS Linux4.19+libbpf开发ebpf程序实现文件操作的实时监控
linux·ebpf