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

相关推荐
晚枫歌F4 小时前
Dpdk介绍
linux·服务器
工程师老罗7 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
千百元7 小时前
centos如何删除恶心定时任务
linux·运维·centos
oMcLin9 小时前
如何在Manjaro Linux上配置并优化Caddy Web服务器,确保高并发流量下的稳定性与安全性?
linux·服务器·前端
济6179 小时前
linux(第七期)--gcc编译软件-- Ubuntu20.04
linux·运维·服务器
corpse20109 小时前
Linux监控软件Monitorix 安装部署
linux·安全
wdfk_prog9 小时前
[Linux]学习笔记系列 -- [fs]super
linux·笔记·学习
姚青&10 小时前
四.文件处理命令-文本编辑
linux
oMcLin10 小时前
如何在 Red Hat Linux 8 上实现 Kubernetes 自定义资源管理器(CRD)扩展,支持微服务架构
linux·架构·kubernetes
济61710 小时前
linux(第十一期)--Makefile 语法简述-- Ubuntu20.04
linux