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

相关推荐
LXY_BUAA13 小时前
《source insight》添加对.s文件的支持
linux
fai厅的秃头姐!13 小时前
01-python基础-day02Linux基础
linux
好评12413 小时前
git常见操作及问题
linux·git
不会代码的小猴14 小时前
Linux环境编程第一天笔记
linux·笔记
optimistic_chen14 小时前
【Docker入门】cgroups 资源控制
linux·运维·ubuntu·docker·容器·cgroup
LXY_BUAA14 小时前
《嵌入式操作系统》_内核编译练习与配置文件讲解_20260119
linux·运维·服务器
xlq2232215 小时前
4.LInux权限
linux·运维·服务器
Bdygsl15 小时前
Linux(10)—— 进程控制(等待)
linux·运维·服务器
c++逐梦人15 小时前
进程的优先级与切换
linux·服务器·操作系统