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

相关推荐
小猪写代码10 分钟前
Ubuntu 文件权限管理
linux·ubuntu
jz_ddk22 分钟前
[Linux] Linux标准块设备驱动详解:从原理到实现
linux·运维·服务器·驱动开发
Gss77737 分钟前
ansible变量+管理机密
linux·运维·ansible
误入运维泥潭39 分钟前
Ansible自动化运维:从入门到精通
linux·ansible·module
半梦半醒*41 分钟前
ansible阶段练习题
linux·运维·自动化·ansible·负载均衡·运维开发
To_再飞行2 小时前
K8s 调度管理
linux·云原生·kubernetes
2302_799525742 小时前
【Hadoop】Hadoop集群安装中出现的问题
linux·hadoop
刘一说2 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务
枫の准大一2 小时前
【Linux游记】基础指令篇
linux
ypf52082 小时前
OrbStack 配置国内镜像加速
linux