c - STDOUT 缓冲区在哪里?

标签 c linux

众所周知,STDOUT 在 Linux 中被缓冲。我的问题是:1)它是所有进程共享的全局缓冲区吗?还是每个进程一个缓冲区? 2)缓冲区在哪里?在堆栈、堆或静态区域? 3) 谁创造了它?

最佳答案

stdout是 C FILE由标准库创建的指针,因此相关代码作为 C 库的一部分加载。在 Linux 上,它将根据 Posix 文件描述符来实现。

您的 C 库和内核都可以使用缓冲;您必须检查各个文档。我建议首先查看 C 库源代码的相关部分(即实现 <stdio.h> 的部分),这应该很有教育意义。

关于c - STDOUT 缓冲区在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933629/

相关文章:

linux - Linux 中交换区脏页的更新

python - python + pyinstaller 支持多个操作系统/版本的 linux 吗?

java - 使用Java调用Linux终端: How to flush the output?

c - IP_RECVERR 的 OSX 等价物

c - 多次运行之间同一程序的不同缓存未命中计数

android - 通过信号调用 Android NDK 项目中的 ffmpeg 部分来终止进程

c - 是否有使用 C 读取 Excel 文件的 FOSS 库

c - 将一个字符串附加到一个二维的char数组?

c - 是否可以测试是否在 gnu Makefile 中声明了 C 定义?

linux - 简单的 T 恤示例