<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 小时前
多路复用epoll
linux·网络·笔记
陌路202 小时前
操作系统(15)--进程与线程
linux·运维·服务器
Howrun7772 小时前
Linux---内核态&用户态
linux
QT 小鲜肉2 小时前
【Linux命令大全】002.文件传输之ftpwho命令(实操篇)
linux·运维·服务器·网络·chrome·笔记
应用市场2 小时前
Linux进程调度与多核CPU深度解析——从内核调度器到实战优化
linux·运维·服务器
帝落若烟2 小时前
ubuntu安装禅道
linux·运维·ubuntu
天上飞的粉红小猪2 小时前
线程同步与互斥
linux·开发语言·c++
大聪明-PLUS3 小时前
Linux 网络和流量加密完整指南(第一部分)
linux·嵌入式·arm·smarc
松涛和鸣4 小时前
DAY43 HTML Basics
linux·前端·网络·网络协议·tcp/ip·html
谁在夜里看海.4 小时前
【Linux-网络】HTTP的清风与HTTPS的密语
linux·网络·http·https