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

相关推荐
Xの哲學1 天前
Linux Tasklet 深度剖析: 从设计思想到底层实现
linux·网络·算法·架构·边缘计算
dog2501 天前
Linux 6.19 TCP 的两个极限拉扯
linux·运维·tcp/ip
新兴AI民工1 天前
【Linux内核九】进程管理模块:list_head钩子构造双向列表和一些宏定义
linux·运维·list·linux内核
小周学学学1 天前
ESXI故障处理-重启后数据存储丢失
linux·运维·服务器
哎哟喂呢哈1 天前
ddns 免费 ipv6
linux
Flash.kkl1 天前
Linux——线程的同步和互斥
linux·开发语言·c++
sunfove1 天前
Python 面向对象编程:从过程式思维到对象模型
linux·开发语言·python
云和数据.ChenGuang1 天前
达梦数据库安装服务故障四
linux·服务器·数据库·达梦数据库·达梦数据
PPPPPaPeR.1 天前
使用vim实现进度条(初级)
linux·编辑器·vim
纵有疾風起1 天前
【Linux 系统开发】基础开发工具详解:自动化构建、版本控制与调试器开发实战
linux·服务器·开发语言·c++·经验分享·开源·bash