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

相关推荐
海盗123414 分钟前
VMware 中 CentOS 7 无法使用 yum 安装 wget 的完整解决方案
linux·运维·centos
gtr20201 小时前
Ubuntu24.04 基于 EtherCAT 的 SVD60N 主站
linux·ethercat
weixin_462446231 小时前
ubuntu真机安装tljh jupyterhub支持跨域iframe
linux·运维·ubuntu
小码吃趴菜1 小时前
select/poll/epoll 核心区别
linux
Ghost Face...1 小时前
深入解析网卡驱动开发与移植
linux·驱动开发
a41324471 小时前
在CentOS系统上挂载硬盘到ESXi虚拟机
linux·运维·centos
MMME~1 小时前
Linux下的软件管理
linux·运维·服务器
迷途之人不知返1 小时前
Linux操作系统的基本指令
linux·服务器
松涛和鸣1 小时前
DAY49 DS18B20 Single-Wire Digital Temperature Acquisition
linux·服务器·网络·数据库·html
BIBI20492 小时前
通过 Studio 3T 远程连接 CentOS 7 上的 MongoDB
linux·mongodb·centos·nosql·配置·问题解决·环境搭建