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

相关推荐
提伯斯646几秒前
解决 PX4 + ROS px4ctrl 「No odom!」自动起飞失败问题
linux·ros·px4·fastlio·mid360·egoplanner
牛奶咖啡1324 分钟前
shell脚本编程(八)
linux·shell脚本编程·while循环语句·计数器控制的while循环·标志控制的while循环·until循环·select循环菜单
Q168496451526 分钟前
知识点-创建、查看和编辑文本文件
linux·运维
小宇的天下36 分钟前
Calibre 3Dstack --每日一个命令days11【dangling_ports】(3-11)
linux·运维·服务器
HIT_Weston1 小时前
97、【Ubuntu】【Hugo】搭建私人博客:搜索功能(二)
linux·运维·ubuntu
chen_mangoo1 小时前
HDMI简介
android·linux·驱动开发·单片机·嵌入式硬件
何达维1 小时前
`kubectl top nodes` 或 `kubectl top pods` 返回 `metrics not available yet` 的排查、解决
linux
东皇太星2 小时前
linux 内存管理详解
linux·运维·服务器
JY.yuyu2 小时前
Linux计划任务进程
linux·运维·服务器
single-life2 小时前
Linux 下 部署es+nebula(附带内网部署方式)
linux·运维·elasticsearch·nebula