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

相关推荐
数研小生4 分钟前
淘宝宝贝详情数据爬虫:单线程采集突破方案(多线程 / 多进程实战)
linux·运维·爬虫
释怀不想释怀9 分钟前
Linux三剑客-sed
linux·运维·服务器
qq_1715203540 分钟前
linux服务器springboot(docker)项目word转pdf中文乱码
linux·spring boot·docker·pdf·word
老兵发新帖43 分钟前
Ubuntu安装fail2ban:防暴力破解
linux·运维·ubuntu
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][clk]clk-bulk
linux·笔记·学习
刘某某.1 小时前
在 mac 和 linux 系统上使用 pyenv
linux·运维·macos
杜子不疼.1 小时前
加载了cpolar的Reader 电子书管理工具远程使用体验
linux·人工智能
weixin_395448912 小时前
mult_yolov5_post_copy.h_cursor_0129
linux·网络·人工智能
是垚不是土2 小时前
OpenTelemetry+Jaeger+ES:分布式链路追踪实战部署
大数据·linux·运维·分布式·elasticsearch·全文检索
无垠的广袤2 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
linux·人工智能·python·opencv·开发板