<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 分钟前
【C++与Linux】文件篇(2)- 文件操作的系统接口详解
linux·c++
Cisco_hw_zte17 分钟前
挂载大容量磁盘【Linux系统】
linux·运维·服务器
DolphinScheduler社区22 分钟前
Linux 环境下,Apache DolphinScheduler 如何驱动 Flink 消费 Kafka 数据?
linux·flink·kafka·开源·apache·海豚调度·大数据工作流调度
艾莉丝努力练剑27 分钟前
【AI时代的赋能与重构】当AI成为创作环境的一部分:机遇、挑战与应对路径
linux·c++·人工智能·python·ai·脉脉·ama
杜子不疼.28 分钟前
【Linux】Ext系列文件系统(一):文件系统的初识
linux·运维·服务器
码农不惑32 分钟前
systemd升级造成的centos-bootc系统的内核故障
linux·centos·bootc
若风的雨39 分钟前
HIP Runtime资源分配相关的核心API分类总结
linux
老友@44 分钟前
JMeter 在 Linux 环境下进行生产级性能压测的完整实战指南
java·linux·jmeter·性能优化·系统架构·压测·性能瓶颈
加强洁西卡1 小时前
【RISC-V】riscv64-linux-gnu工具链都有哪些工具
linux·gnu·risc-v
hunter14501 小时前
docker 在centos和ubuntu的安装
linux·docker·centos