本文共 1595 字,大约阅读时间需要 5 分钟。
**前言**这本书是关于Linux上的系统编程。“系统编程”是指编写系统软件,其代码在底层运行,直接跟内核和核心系统库对话。换句话说,本书的主题是Linux系统调用和底层函数说明,如C库定义的函数。
虽然已经有很多书探讨UNIX上的系统编程,却很少有专注于探讨Linux方面的书籍,而探讨最新版本的Linux以及Linux特有的高级接口的书籍更是凤毛麟角。此外,本书还有一个优势:我为Linux贡献了很多代码,包括内核及其上面的系统软件。实际上,本书中提到的一些系统调用和系统软件就是我实现的。因此,本书涉及很多内幕资料,不仅介绍系统接口如何工作,还阐述它们实际上是如何工作,以及如何高效利用这些接口。因此,本书既是一本关于Linux系统编程的教程,也是一本介绍Linux系统调用的手册,同时还是一本如何实现更优雅、更快代码的内幕指南。这本书内容翔实,不管你是否每天都在编写系统级代码,本书给出的很多技巧都有助于你成为更优秀的软件工程师。
本书假定读者熟悉C编程和Linux编程环境——不要求很精通,但至少比较熟悉。如果你不习惯于UNIX文本编辑器——Emacs和vim(后者成为最广泛使用的编辑器,而且评价很高),那么至少应该熟悉一个。你还应该对如何使用gcc、gdb、make等工具很熟悉。已经有很多书籍介绍了关于Linux编程的工具和实践,本书最后的附录B给出一些有用的资源。我并没有假设用户了解UNIX或Linux系统编程。本书是从零开始,从最基本的开始介绍,一直到高级接口和一些优化技巧。我希望不同层次的读者都能够从本书学到一些新东西,觉得本书有价值。在写本书过程中,我自己就感觉颇有收获。
同样,我并不想去说服或鼓励读者做什么。目标读者显然是那些希望能够(更好地)在系统上编程的工程师,但是希望奠定更坚实的基础的高级编程人员还可以找到很多其他有趣的资料。本书也适合那些只是出于好奇的黑客,它应该能够满足他们的好奇心。本书目标是希望能够满足大部分的编程人员。
不管出于什么目的,最重要的是,希望你会觉得本书很有意思。
**[第1章 入门和基本概念
1.1 系统编程](**1.1.1 为什么要学习系统编程1.1.2 系统编程的基础1.1.3 系统调用1.1.4 C库1.1.5 C编译器1.2.1 API1.2.2 ABI1.3.1 POSIX和SUS的历史1.3.2 C语言标准1.3.3 Linux和标准1.3.4 本书和标准1.4.1 文件和文件系统1.4.2 进程1.4.3 用户和组1.4.4 权限1.4.5 信号1.4.6 进程间通信1.4.7 头文件1.4.8 错误处理**[第2章 文件I/O2.1 打开文件](**2.1.1 系统调用open()2.1.2 新建文件的所有者2.1.3 新建文件的权限2.1.4 creat()函数2.1.5 返回值和错误码2.2.1 返回值2.2.2 读入所有字节2.2.3 非阻塞读2.2.4 其他错误码2.2.5 read()调用的大小限制2.3.1 部分写(Partial Write)2.3.2 Append(追加)模式2.3.3 非阻塞写2.3.4 其他错误码2.3.5 write()大小限制2.3.6 write()行为2.4.1 fsync()和fdatasync()2.4.2 sync()2.4.3 O_SYNC标志位2.4.4 O_DSYNC和O_RSYNC2.7.1 在文件末尾后查找2.7.2 错误码2.7.3 限制2.10.1 select()2.10.2 poll()2.10.3 poll()和select()的区别2.11.1 虚拟文件系统2.11.2 页缓存2.11.3 页回写转载地址:http://raxba.baihongyu.com/