2025-06-27 Linux基础IO:文件描述符、缓冲区与重定向的深入解析 Linux基础IO:文件描述符、缓冲区与重定向的深入解析 一、文件描述符:操作系统与进程的对话桥梁当我们用C语言的fopen()打开文件时,背后隐藏着一个关键角色——文件描述符(File Descriptor)。这个看似简单的整数,实际是Linux系统IO操作的核心枢纽。c int fd = open("test.txt", O_RDWR);每个进程默认会打开三个文件描述符: - 0(STDINFILENO):标准输入 - 1(STDOUTFILENO):标准输出- 2(STDERR_FILENO):标准错误内核通过文件描述符表管理这些资源。这个表就像酒店的房卡系统:用户拿着房卡(fd)不需要知道具体房间位置,由前台(内核)负责实际寻址。二、缓冲区的双重世界:用户空间与内核空间IO操作涉及到两个关键缓冲区: 用户缓冲区(stdio库维护) 存在于FILE结构体中 默认大小通常为4KB(可通过setvbuf调整) 减少系统调用次数 内核缓冲区(Page Cache) 由内核管理的磁盘缓存 采用LRU算法管理 实际写盘时机由pdflush线程控制 当调用fprintf()时,数据会先存入用户缓冲区,满后才通过write系统调用进... 2025年06月27日 24 阅读 0 评论