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

相关推荐
小米里的大麦35 分钟前
025 理解文件系统
linux
打不了嗝 ᥬ᭄1 小时前
Linux 信号
linux·开发语言·c++·算法
禁默1 小时前
进程替换:从 “改头换面” 到程序加载的底层逻辑
linux·运维·服务器
gameatp2 小时前
从 Windows 到 Linux 服务器的全自动部署教程(免密登录 + 压缩 + 上传 + 启动)
linux·服务器·windows
穷人小水滴2 小时前
在 windows 运行 flatpak 应用 (WSL)
linux·windows·ubuntu
一只拉古2 小时前
DevOps 的 Linux 基础(第一部分)
linux·自动化运维·devops
mit6.8243 小时前
ubuntu远程桌面很卡怎么解决?
linux·ubuntu·php
飞鸟真人3 小时前
linux下用c++11写一个UDP回显程序
linux·udp·即时通信
朱颜辞镜花辞树‎3 小时前
关于 Linux 内存管理
linux
reduceanxiety4 小时前
第四章 Linux实用操作
linux·运维·服务器