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

相关推荐
蓝晶之心1 小时前
Linux rsync ssh方式数据备份
linux·运维·服务器
ss2731 小时前
Java线程池全解:工作原理、参数调优
java·linux·python
fengyehongWorld2 小时前
Linux sudo命令
linux·运维·服务器
JiMoKuangXiangQu2 小时前
Linux 内存管理:页表管理简析
linux·mmu·内存管理·页表管理
WG_172 小时前
Linux:缓冲区_glibc封装
linux·运维·服务器
番知了2 小时前
Ubuntu 22.04 常用命令清单
linux·运维·ubuntu
FF-Studio2 小时前
Ubuntu 24.04 磁盘爆满“灵异“事件:Btrfs, Snapper 与删不掉的空间
linux·运维·人工智能·ubuntu
极地星光2 小时前
Ubuntu 16.10 启动时 networking.service 缓慢问题
linux·ubuntu
Roadinforest2 小时前
如何使用 keyd 定制 Caps Lock:拯救你坏掉的 Left Control 键(Linux-Ubuntu)
linux·ubuntu
舞动青春883 小时前
Ubuntu安装QEMU过程及问题记录
linux·学习·ubuntu