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

相关推荐
江畔何人初34 分钟前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~43 分钟前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
齐鲁大虾1 小时前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
范纹杉想快点毕业1 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc
峥嵘life2 小时前
Android16 【CTS】CtsMediaCodecTestCases等一些列Media测试存在Failed项
android·linux·学习
prettyxian2 小时前
【linux】进程控制(1):从fork创建到wait回收
linux
来来走走2 小时前
rocky linux 9.7安装mysql 8.4+
linux·数据库·mysql
大黄说说2 小时前
深入理解 Linux 权限机制:文件、用户与访问控制全解析
linux·运维·服务器
小生不才yz2 小时前
shell编程 - 条件测试
linux
2301_772204282 小时前
Linux 驱动开发:杂项设备驱动与自动设备号管理
linux·运维·驱动开发