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

相关推荐
嵩山小老虎14 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模14 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a413244715 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
一只自律的鸡16 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)16 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
!chen16 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
REDcker17 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
蒹葭玉树17 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十八期)
linux·c++·面试
2501_9277730717 小时前
imx6驱动
linux·运维·服务器
hy____12317 小时前
Linux_进程间通信
linux·运维·服务器