第 6 章:系统编程
第 61--70 节 系统编程是 C 语言的天下 —— 而 Auto 选择了一条不同的路。
C 语言诞生于编写操作系统的需求。它的标准库直接建立在内核系统调用之上, 每个 C 程序员最终都要学习文件描述符、进程、信号和内存映射。Auto 采取了 更高层次的方案:它将危险的原语封装在安全的 API 中,不暴露原始系统调用。
本章有大量 C 独有的概念。我们将它们作为理解程序如何与操作系统交互的 必备知识来讲解,并在有 Auto 简化替代方案的地方加以说明。
61. 系统调用与标准库
每个操作系统都提供一组系统调用 —— 向内核请求服务的函数。在 C 中, 你可以直接调用它们:
c
/* 原始系统调用 */
ssize_t n = read(fd, buffer, sizeof(buffer));
/* 标准库包装(带缓冲,可移植性更好) */
size_t n = fread(buffer, 1, sizeof(buffer), file);标准库用缓冲、错误处理和可移植性包装了原始系统调用。fread() 内部 调用 read(),但添加了用户空间缓冲。
Auto 走得更远:print()、read_file()、write_file() 等函数 完全隐藏了系统调用的细节。你不需要处理文件描述符或缓冲管理。