本过程与2015全年计划的读书计划相匹配,旨在督促自我,并且记录一下自己学习的过程~
先谈谈阅读此神书的原因,之前一直在一家公司做嵌入式研发,感觉底层能力特差,动手能力不强,但是自己又想在linux这块做下去,寻求各方资料,研究方向,发现linux网络工程师是个吸引我的方向,所以,一不做二不休,开动~
UNIX环境高级编程,全称Advanced Programming in the UNIX Environment,就是我们所说的apue。此神书,现在已经出了第三版,但是第三版还没有中文版,而英文版阅读起来难度略大,所以熊二还是选择第二版来学习,希望通过APUE,我可以flymoon!学习之前,还是先来个预习,预先学习一下APUE这本书的目录。
第一章 UNIX基础知识
本章从程序设计人员角度快速浏览UNIX。所有操作系统都需要向他们运行的程序提供各种服务。包括执行新程序、打开文件、读文件、分配存储区以及获得当前时间等。严格意义上,可以将操作系统定义为一种软件,它控制计算机的硬件资源,提供程序运行环境。这种软件,我们称为内核,它相对较小,位于环境中心。内核的接口被称为系统调用。shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口。广义上,操作系统包含了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性。这些软件包括系统实用软件(system utilities)(具体概念可以查看以下网站,全英文慎入,我的译文)、应用软件、shell以及公用函数库等。
在/etc/passwd目录查看登陆名等信息。
shell,命令行解释器,用户可以向shell程序键入命令。
文件系统,UNIX文件系统是目录和文件组成的一种层次结构,目录的起点是根(root),名字是字符/。目录是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是指文件类型(是普通文件还是目录)、文件大小、文件所有者、文件权限、文件最后修改时间。
可使用stat和lstat函数来查看文件的状态。
linux的文件名不能包含斜线(/)和空格(windows表示无压力)。斜线用来分隔构成路径名的各文件名,空操作符则用来终止一个路径名。好的习惯是只使用印刷字符的一个子集作为文件名字符。因为如果文件名中使用了某些shell特殊字符,则必须使用shell的引号机制来引用文件名,这会带来很多麻烦。
路径名,一个或多个以斜线分隔的文件名序列构成路径名,以斜线开头的绝对路径,否则称为相对路径。
工作目录,每个进程都有一个工作目录,也称为当前工作目录。所有相对路径名都从工作目录开始解释。进程可以使用chdir函数来更改其工作目录。
起始目录,登陆时,工作目录设置为其实目录,该起始目录从口令文件中相应的登陆项中取得。
文件描述符,file descriptor通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建的新文件时,返回一个问文件描述符。在读写文件时可以使用它。
标准输入、标准输出、标准出错
按照惯例,每当运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入、标准输出、标准出错。简单命令这个三个描述符一般都链向终端。大多数shell都提供一种方法,使其中任何一个都能重定向到某个文件。
不用缓冲的I/O
函数open、read、write、lseek以及close提供不用缓冲的I/O。这些函数都使用文件描述符。
标准I/O
标准I/O函数提供一种对不用缓冲I/O函数的带缓冲的接口。使用标准I/O函数可以无需担心如何选取最佳的缓冲区大小。
程序(program)是存放在磁盘上,处于某个目录中的可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。
进程和进程ID
程序的执行实例被称为进程(process)。某些系统使用任务(task)表示正在被执行的进程。
每个进程有一个唯一的数字标识符,称为进程ID(process ID)。
进程控制
三个用于控制进程的主要函数:fork、exec和waitpid。
线程和线程ID
在一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程有关的属性。因为它们可以访问同一存储区,所以各线程在访问共享数据时需要采用同步措施来避免不一致。
与进程相同,线程也有ID。但线程的ID只在它所属的进程内起作用。
出错处理
第二章 UNIX标准化及实现
第三章 文件I/O
第四章 文件和目录
第五章 标准I/O库
第六章 系统数据文件和信息
第七章 进程环境
第八章 进程控制
第九章 进程关系
第十章 信号
第十一章 线程
第十二章 线程控制
第十三章 守护进程
第十四章 高级I/O
第十五章 进程间通信
第十六章 网络IPC:套接字
第十七章 高级进程间通信
第十八章 终端I/O
第十九章 伪终端
第二十章 数据库函数库
第二十一章 与网络打印机通信
总计715页,熊二准备弄死apue。。大家觉得可以么~