目录 第1部分 起步篇 第1章 UNIX初步 3 1.1 UNIX的发展历程 4 1.1.1 UNIX的诞生 4 1.1.2 UNIX的发展与分支 4 1.2 UNIX的基本操作 5 1.2.1 shell简介 5 1.2.2 系统登录 6 1.2.3 用户管理 7 1.2.4 文件管理 7 1.2.5 目录管理 9 1.2.6 I/O重定向 9 1.2.7 管道 10 1.2.8 进程管理 11 1.3 文本编辑器vi 11 1.3.1 vi的模式 12 1.3.2 vi的常用命令 13 1.4 小结 16 第2章 编程套件 17 2.1 开发套件的选择 18 2.1.1 编辑器UltraEdit 18 2.1.2 网络终端SecureCRT 18 2.1.3 网络终端SecureNetTerm 19 2.2 编译器cc的使用 19 2.2.1 cc的初体验 19 2.2.2 cc选项 20 2.3 使用make工具 22 2.3.1 make初体验 22 2.3.2 makefile的结构 22 2.4 使用gdb调试器 25 2.4.1 gdb的编译与启动 25 2.4.2 gdb的程序控制 26 2.5 小结 28 第3章 库的使用 29 3.1 操作库工具 30 3.1.1 库分类 30 3.1.2 静态库的操作工具 31 3.2 静态编程库 31 3.2.1 静态库的生成 32 3.2.2 静态库的应用模型 33 3.3 动态库的生成 34 3.4 动态库的隐式调用 35 3.5 动态库的显式调用 37 3.5.1 函数族 37 3.5.2 应用模型 39 3.6 小结 40 第2部分 文件子系统 第4章 文件系统结构 45 4.1 文件系统的结构 46 4.2 磁盘文件的存储 47 4.3 文件属性 50 4.3.1 文件属性函数族 50 4.3.2 文件类型 51 4.3.3 文件访问权限 52 4.3.4 文件其他属性 54 4.4 文件系统属性 55 4.5 小结 57 第5章 标准文件编程库 59 5.1 文件的创建、打开、 关闭与删除 60 5.2 文件的无格式读写 63 5.2.1 字符读写 63 5.2.2 行读写 66 5.2.3 块读写 69 5.3 文件的格式化读写 72 5.3.1 数据格式转换 72 5.3.2 文件的格式化输出函数族 73 5.3.3 文件的格式化输入函数族 76 5.4 函数的变长参数 77 5.4.1. 变长参数的使用 77 5.4.2 变长参数的传递 79 5.5 文件读写位置的定位 80 5.6 文件的状态 82 5.6.1 文件的错误与结束状态 82 5.6.2 文件的错误信息 83 5.7 文件的缓冲 83 5.7.1 缓冲模式 83 5.7.2 缓冲函数 84 5.8 项目:通用函数库之 调试功能库封装 85 5.8.1 通用函数库 85 5.8.2 调试库内容 86 5.8.3 调试库设计 87 5.8.4 调试库编译 90 5.8.5 调试库应用实例 91 5.9 小结 92 第6章 低级文件编程库 95 6.1 文件描述符 96 6.2 文件的打开与创建 96 6.3 文件的关闭与删除 99 6.4 文件读 100 6.5 文件写 101 6.6 文件的定位 101 6.7 文件缓冲 103 6.8 复制文件描述符 103 6.9 文件控制 103 6.9.1 函数fcntl 103 6.9.2 文件锁 105 6.9.3 文件锁操作 106 6.10 项目:通用函数库之 读写功能库封装 110 6.10.1 阻塞读写函数库 110 6.10.2 阻塞读写函数库应用实例 112 6.11 小结 112 第7章 目录文件编程库 115 7.1 工作目录 116 7.2 目录的创建与删除 117 7.3 目录的读取 118 7.4 目录的定位 120 7.5 小结 120 第8章 设备文件 123 8.1 设备文件概述 124 8.2 设备文件操作 124 8.3 终端设备 125 8.3.1 终端设备简介 125 8.3.2 终端设备操作 126 8.4 外部设备操作 130 8.4.1 操作连接串口的外设 130 8.4.2 操作连接终端的外设 134 8.5 小结 135 第3部分 并发程序设计 第9章 进程控制 139 9.1 进程基本环境 140 9.1.1 进程概念 140 9.1.2 进程的标识 142 9.1.3 进程命令行 143 9.1.4 环境变量 145 9.2 进程的生命周期 147 9.2.1 进程的创建 147 9.2.2 新程序的执行 149 9.2.3 进程的休眠 153 9.2.4 进程的终止 153 9.2.5
1