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

相关推荐
会飞的土拨鼠呀22 分钟前
Linux的存储使用率应该如何计算
linux·运维·服务器
weixin_511255212 小时前
NGINX常用配置
linux·服务器·nginx
昌原的儿子LEO3 小时前
进程和线程(2)
linux·服务器·网络
会飞的土拨鼠呀3 小时前
Linux 真实内存使用率的核心计算标准
linux·运维·服务器
陈年老古董5 小时前
CentOS编译安装Python3.11完整教程
linux·笔记·学习·centos·python3.11
深念Y5 小时前
为什么选 Go:直观、可维护、AI 友好
linux·开发语言·人工智能·golang·agent·harness
笨笨饿5 小时前
#111_关于FreeRTOS面试的一些题目
linux·ubuntu·面试·职场和发展·centos·rtos
当代红领巾5 小时前
VMware 里装好 Linux 系统没有 ipv4 地址?
linux·运维·服务器
老当益壮梁奶奶5 小时前
Linux 软件编程学习笔记(六):线程编程入门与实践
linux·c语言·c++·笔记·学习
2401_868534786 小时前
运维工程师大厂 Nginx 面试题(二)
linux·网络协议