<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 分钟前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc17 分钟前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn17 分钟前
Linux同步机制之信号量
linux·服务器·网络
BullSmall38 分钟前
linux 根据端口查看进程
linux·运维·服务器
_F_y1 小时前
Linux:进程间通信
linux
weixin_462446231 小时前
Kali/ubuntu Linux 中彻底删除 Cursor 编辑器(含 dpkg 非空目录警告解决)
linux·ubuntu·cursor
Hard but lovely1 小时前
linux:----进程守护化(Daemon)&&会话的原理
linux·运维·服务器
芝麻馅汤圆儿2 小时前
sockperf 工具
linux·服务器·数据库
Trouvaille ~2 小时前
【Linux】虚拟内存揭秘:地址空间的魔法
linux·运维·服务器·系统·入门·虚拟内存·进程地址空间
木子欢儿2 小时前
Debian 13安装rime中文输入法
linux·运维·服务器·debian