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

相关推荐
Coder个人博客20 分钟前
Linux6.19-ARM64 mm mmap子模块深入分析
大数据·linux·安全·车载系统·系统架构·系统安全·鸿蒙系统
江畔何人初21 分钟前
/etc/profile,.profile,.bashrc三者区分
linux·运维·云原生
会飞的土拨鼠呀32 分钟前
Ubuntu系统缺少 iptables 工具
linux·运维·ubuntu
前端玖耀里32 分钟前
详细介绍Linux命令dig和nslookup
linux·运维·服务器
呱呱巨基33 分钟前
Linux 第一个系统程序 进度条
linux·c++·笔记·学习
星期五不见面40 分钟前
jetson naon super使用 sudo /opt/nvidia/jetson-io/jetson-io.py 界面闪退
linux·运维·服务器
Coder个人博客1 小时前
Linux6.19-ARM64 mm hugetlbpage子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
FreeBuf_1 小时前
AutoPentestX:面向 Linux 系统的自动化渗透测试工具包
linux·运维·自动化
EverydayJoy^v^1 小时前
RH134简单知识点——第11章—— 管理网络安全
linux·网络·web安全
leiming61 小时前
Qt视频监控系统开发实战:从视频捕获到照片管理
linux·数码相机·音视频