LinuxIO编程核心要点解析:文件、流与缓冲区实战指南
- 游戏开发
- 2025-09-12 14:03:02

文章目录 1. Linux 文件类型2. IO 概念3. 系统调用 vs 库函数4. 流(Stream)的概念5. Windows 与 Linux 换行符6. 缓冲区类型7. 三种标准 IO 流8. 缓冲区行为演示(buffer.c)9. 关键函数总结
1. Linux 文件类型 类型描述示例常规文件普通数据文件-.txt, .c, 二进制文件目录文件存储文件路径信息d/home, /etc字符设备按字符流访问的设备c终端 /dev/tty,键盘 /dev/input块设备按数据块访问的设备b硬盘 /dev/sda,U盘 /dev/sdb1链接文件文件快捷方式lln -s source.txt link_to_source
2. IO 概念 输入设备:键盘(/dev/input)、鼠标。输出设备:显示器(/dev/fb0)、打印机。双向设备:U盘(/dev/sdb1)、网卡(eth0)。
3. 系统调用 vs 库函数 类型描述示例函数系统调用操作系统直接提供的接口open(), read(), write()库函数封装系统调用的高级接口fopen(), fread(), printf()
代码示例:
// 系统调用直接操作文件描述符 int fd = open("file.txt", O_RDWR); write(fd, "Hello", 5); // 库函数封装为文件流操作 FILE *fp = fopen("file.txt", "w"); fprintf(fp, "Hello");4. 流(Stream)的概念
在 C 语言中,流是文件或设备的抽象,表示为 FILE 结构体。
示例:
FILE *fp = fopen("data.txt", "r"); // 打开文件流 char buffer[100]; fgets(buffer, 100, fp); // 从流中读取数据5. Windows 与 Linux 换行符 Windows:\r\n(回车 + 换行)。Linux:\n(仅换行)。 代码适配: // 跨平台换行符处理 fprintf(fp, "Line1%c", '\n'); // Linux 正常,Windows 可能显示异常 fprintf(fp, "Line2\r\n"); // Windows 兼容
6. 缓冲区类型 类型描述触发条件示例场景全缓冲缓冲区满后刷新默认文件操作普通文件读写行缓冲遇到换行符或缓冲区满刷新终端(标准输入/输出)printf("Hello\n")无缓冲直接写入设备标准错误流(即时显示错误)fprintf(stderr, ...)
代码示例:
#include <stdio.h> int main() { printf("Hello"); // 行缓冲,无换行符时可能不立即显示 fflush(stdout); // 手动刷新缓冲区 return 0; }默认缓冲区大小:
全缓冲(文件操作):通常为 BUFSIZ(定义在 <stdio.h> 中),在大多数系统中为 8192 字节(8KB)。行缓冲(终端输入/输出):通常为 1024 字节(但可能更小,如 512 字节)。无缓冲(如 stderr):数据直接写入设备,无缓冲区。查看默认值:
#include <stdio.h> printf("BUFSIZ = %d\n", BUFSIZ); // 输出默认缓冲区大小7. 三种标准 IO 流 流类型文件描述符宏定义默认设备标准输入流0STDIN_FILENO键盘标准输出流1STDOUT_FILENO显示器标准错误流2STDERR_FILENO显示器
使用示例:
// 从键盘读取输入 char input[100]; fgets(input, 100, stdin); // 向屏幕输出错误 fprintf(stderr, "Error: File not found!\n");8. 缓冲区行为演示(buffer.c) #include <stdio.h> #include <unistd.h> int main() { printf("Hello"); // 行缓冲,无换行符时程序结束前不显示 sleep(2); // 休眠 2 秒 // 若此处调用 _exit(0)(不刷新缓冲区),则 "Hello" 不会显示 return 0; // 正常退出会刷新缓冲区 }
9. 关键函数总结 操作系统调用库函数打开文件open()fopen()读取数据read()fread(), fgets()写入数据write()fwrite(), fprintf()关闭文件close()fclose()设置缓冲区类型setvbuf()-
总结:Linux IO 编程需掌握文件类型、系统调用与库函数的区别、缓冲区机制及标准流的操作。通过合理使用缓冲策略和错误流,可以提升程序效率和健壮性。
LinuxIO编程核心要点解析:文件、流与缓冲区实战指南由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“LinuxIO编程核心要点解析:文件、流与缓冲区实战指南”