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

相关推荐
洪流之源19 小时前
图像格式转换与内存对齐详解
linux
二宝哥19 小时前
Failed connect to mirrorlist.centos.org:80; Connection refused
linux·运维·centos
humors22119 小时前
一些安全类网站(不定期更新)
linux·网络·windows·安全·黑客·白帽
Kk.080219 小时前
Linux(九)fork复制进程与写时拷贝技术
linux·运维·服务器
一个人旅程~19 小时前
双系统时windows如何读取linux ext4格式硬盘分区?
linux·windows·经验分享·电脑
齐齐大魔王20 小时前
linux-进程详解
linux·运维·服务器
應呈20 小时前
Bootloader与OTA学习记录
linux·运维·服务器
勤自省20 小时前
在Ubuntu20.04上安装ROS
linux·ros
楼田莉子20 小时前
同步/异步日志系统:工具类以及日志的简单模块
linux·服务器·数据结构·c++
corpse201020 小时前
VirtualBox 安装ubuntu-25 ,配置SSH工具登录
linux·ubuntu·ssh