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

相关推荐
NEAI_N5 分钟前
离网设备的加密解密方案
linux·服务器·网络
左手の明天7 分钟前
Linux内核裁剪深入浅出:从原理到实操,打造轻量化嵌入式内核
linux·arm开发·c++
萝卜白菜。8 分钟前
annotation扫描引起的StackOverflowError问题
linux·运维·服务器
瀚高PG实验室13 分钟前
瀚高安全版 V4.5.10卸载后残留了db_ha的agent进程导致6666端口被占用
linux·数据库·安全·瀚高数据库
HHFQ21 分钟前
如何仅使用键盘通过图形界面安装 RHEL 等 Linux 发行版
linux·运维
枕布响丸辣24 分钟前
Linux 系统安全及应用实战:账号、引导、弱口令与端口扫描全解析
linux·运维·系统安全
酸菜。25 分钟前
lspci -tv使用
linux
zzh08125 分钟前
Linux系统安全
linux·运维·系统安全
Miraitowa_cheems26 分钟前
LeetCode算法日记 - Day 5: 长度最小的子数组、无重复字符的最长子串
linux·运维·服务器
YMWM_28 分钟前
linux命令行测试是否可以访问google、github、huggingface
linux·运维·github