
| 对概念进行了精炼的总结,并结合插图进行说明,对文件的安全编程和网络编程等内容进行了深入剖析,对代码进行了详细注释,阅读起来很容易理解,全书提供了114个实例和1个综合实例,非常实用。 本丛书的作者团队对计算机程序设计类图书市场有很好的敏感性,对出版动态有准确的把握,对计算机技术的发展进行长期跟踪。该团队长期以来致力于计算机图书的内容提供和策划,已经出版的多个系列图书都在计算机图书市场上有良好的口碑,都曾经引领了当年的计算机程序设计畅销书。 |
| 本丛书的作者团队对计算机程序设计类图书市场有很好的敏感性,对出版动态有准确的把握,对计算机技术的发展进行长期跟踪。该团队长期以来致力于计算机图书的内容提供和策划,已经出版的多个系列图书都在计算机图书市场上有良好的口碑,都曾经引领了当年的计算机程序设计畅销书。 |
| 第一篇 系统环境 第1章 Linux系统概述 2 1.1 计算机操作系统简介 2 1.1.1 操作系统的概念 2 1.1.2 操作系统的基本功能 3 1.1.3 主要操作系统介绍 3 1.2 Linux操作系统介绍 4 1.2.1 Linux的来源 4 1.2.2 什么是Linux 5 1.2.3 Linux的特性及优点 7 1.2.4 为什么要选择Linux 8 1.2.5 内核的组成 8 1.3 主流Linux操作系统及发行版本 10 1.3.1 Linux内核的版本 10 1.3.2 Linux的发行版本 10 1.4 小结 11 第2章 shell环境 12 2.1 shell介绍 12 2.1.1 shell的种类 12 2.1.2 如何进入shell 13 2.1.3 如何使用shell 14 2.2 shell编程基础 15 2.2.1 创建和运行shell脚本程序 15 2.2.2 shell环境变量 16 2.2.3 常用的shell命令 18 2.2.4 管道与重定向的使用 19 2.2.5 shell变量的使用 21 2.2.6 shell运算符的应用 22 2.2.7 在shell脚本中进行条件控制 23 2.2.8 在shell脚本中使用for循环 25 2.2.9 在shell脚本中使用while循环 26 2.2.10 在shell脚本中使用until循环 27 2.2.11 在shell脚本中使用函数 27 2.3 综合实例 28 2.3.1 实例需求 28 2.3.2 系统设计 28 2.3.3 程序代码 28 2.4 小结 33 第二篇 C语言及编程环境 第3章 C语言简介 36 3.1 C语言概述 36 3.1.1 C语言的发展简史 36 3.1.2 C语言的特点 37 3.2 C语言的组成元素 37 3.2.1 字符集 37 3.2.2 标识符 38 3.2.3 关键字 38 3.2.4 常量的类型 38 3.2.5 变量的类型 39 3.2.6 变量的存储类型 40 3.2.7 变量的作用域 42 3.2.8 运算符 42 3.2.9 注释方法 43 3.3 语句与控制结构 43 3.3.1 表达式语句的组成 43 3.3.2 复合语句 44 3.3.3 函数调用语句 44 3.3.4 控制语句 44 3.3.5 循环控制语句 47 3.3.6 转移语句 48 3.4 函数与程序结构 48 3.4.1 库函数 48 3.4.2 用户自定义函数 49 3.5 数组 49 3.5.1 一维数组的定义和使用 49 3.5.2 多维数组的定义和使用 50 3.6 结构 52 3.6.1 结构的定义 52 3.6.2 结构成员的引用 53 3.7 指针 53 3.7.1 指针的概念 54 3.7.2 指针的定义和使用 54 3.7.3 指针变量的运算 55 3.8 综合实例 56 3.8.1 冒泡排序算法原理 56 3.8.2 冒泡排序算法实现 56 3.9 小结 58 第4章 vi编辑器 59 4.1 vi编辑器概述 59 4.1.1 vi的启动 59 4.1.2 vi的操作方式 59 4.1.3 vi编辑器的功能键 60 4.1.4 退出vi编辑器 61 4.2 vi编辑器的命令 62 4.2.1 光标移动命令 62 4.2.2 滚动屏幕命令 62 4.2.3 文本编辑命令 63 4.2.4 文本删除命令 63 4.2.5 文本修改命令 64 4.2.6 文本移动命令 64 4.2.7 搜索命令 65 4.2.8 ex转义命令 65 4.3 vi编辑器的选项 66 4.3.1 选项的含义 66 4.3.2 选项的设置方式 67 4.4 小结 68 第5章 gcc编译器 69 5.1 编译过程简述 69 5.1.1 预编译过程 69 5.1.2 编译的过程 71 5.1.3 优化及汇编的过程 71 5.2 链接过程简述 72 5.2.1 链接的过程 72 5.2.2 静态链接与动态链接 73 5.3 gcc编译器简述 73 5.3.1 程序的编译与链接 74 5.3.2 gcc编译器的工作过程 74 5.4 gcc编译器语法 75 5.4.1 常用语法 75 5.4.2 用gcc编译器生成可执行文件 76 5.4.3 用gcc编译器生成动态链接库 76 5.4.4 如何使用动态链接 77 5.4.5 gcc编译器常见错误排除 78 5.5 小结 78 第6章 make的使用 79 6.1 makefile介绍 79 6.2 makefile的书写规则 80 6.2.1 基本语法规则 80 6.2.2 定义变量 80 6.2.3 环境变量 81 6.2.4 通配符的使用 81 6.2.5 使用条件判断 82 6.2.6 在makefile中使用函数 82 6.2.7 使用make与直接使用gcc脚本的区别 84 6.3 make工具 84 6.3.1 运行make命令 84 6.3.2 make命令的工作过程 85 6.3.3 在makefile中使用伪目标 85 6.3.4 make命令的返回值 86 6.4 综合实例 86 6.4.1 makefile应用的环境 86 6.4.2 makefile的实现及解释 86 6.5 小结 87 第7章 程序调试 88 7.1 错误处理 88 7.1.1 使用标准错误输出 88 7.1.2 使用errno全局变量 89 7.1.3 使用错误信号处理 90 7.1.4 使用assert断言 91 7.1.5 内存泄露的检查 92 7.1.6 其他可能的内存错误 93 7.2 gdb介绍 94 7.2.1 利用gdb调试的前提 94 7.2.2 启动gdb的方法 94 7.2.3 gdb的基本功能 95 7.3 使用gdb进行调试实例 97 7.4 小结 98 第8章 创建与使用库 99 8.1 函数库介绍 99 8.1.1 系统函数库的使用 99 8.1.2 用户自定义函数库的创建和使用 100 8.2 库函数与系统调用 102 8.2.1 系统调用介绍 103 8.2.2 库函数介绍 104 8.3 动态库的创建与使用 105 8.4 综合实例 108 8.5 小结 109 第三篇 输入输出及进程管理 第9章 文件操作 112 9.1 Linux文件系统简述 112 9.1.1 逻辑磁盘分区管理 112 9.1.2 文件系统的建立与挂载 114 9.1.3 虚拟文件系统 117 9.1.4 ext2文件系统 117 9.1.5 文件类型 119 9.1.6 文件权限管理 120 9.2 文件基本操作 125 9.2.1 文件编程的基本概念 125 9.2.2 文件的创建与打开 126 9.2.3 文件的读写 130 9.2.4 文件的关闭与删除 133 9.2.5 文件的随机存取 135 9.3 文件安全编程 137 9.3.1 文件的属主及用户组编程 137 9.3.2 设置文件权限(UGO模式) 139 9.3.3 设置文件权限(ACL模式) 141 9.4 文件属性编程 145 9.5 目录编程 148 9.6 综合实例 152 9.6.1 ELF文件格式 152 9.6.2 程序实现 152 9.7 小结 156 第10章 标准输入输出库 157 10.1 标准I/O的基本概念 157 10.1.1 流 157 10.1.2 缓存 158 10.1.3 标准输入、标准输出及标准错误输出 160 10.2 使用标准I/O进行文件操作 162 10.2.1 打开关闭流文件 162 10.2.2 单字符方式读写 162 10.2.3 行方式读写 164 10.2.4 二进制方式读写 166 10.2.5 格式化输入/输出 168 10.2.6 在流文件中定位 170 10.3 综合实例 171 10.4 小结 174 第11章 界面程序设计——Qt 175 11.1 Qt简述 175 11.1.1 Qt的组成 175 11.1.2 Qt的优点 175 11.2 Qt开发包的安装 176 11.3 Qt集成开发环境介绍 177 11.3.1 启动设计器 177 11.3.2 设计器界面元素介绍 178 11.4 Qt程序开发 179 11.4.1 建立新项目 179 11.4.2 设计窗口 179 11.4.3 添加事件处理程序 181 11.4.4 添加主程序 182 11.5 Qt程序的生成 183 11.6 小结 184 第12章 界面程序设计——GTK+ 185 12.1 GNOME与KDE 185 12.1.1 Linux图形界面原理 185 12.1.2 X协议 185 12.1.3 GNOME与KDE 的启动 186 12.1.4 GNOME与KDE的区别 187 12.2 使用GTK+进行开发 187 12.2.1 GTK+的安装 187 12.2.2 GTK+程序的初始化与退出 187 12.2.3 GTK+的事件处理 188 12.2.4 使用GTK+实现HelloWorld 189 12.2.5 编译GTK+程序 191 12.2.6 在GTK+中使用控件 191 12.3 综合实例 192 12.3.1 实例需求 192 12.3.2 实例代码及解释 192 12.4 小结 194 第13章 进程 195 13.1 进程的基本概念 195 13.1.1 进程的属性 195 13.1.2 进程的内存映像 197 13.1.3 进程组 198 13.1.4 进程的会话 199 13.1.5 进程的控制终端 201 13.1.6 进程的状态 202 13.1.7 进程的优先级 204 13.2 进程的运行环境 206 13.2.1 进程的入口函数 206 13.2.2 进程的环境变量 211 13.2.3 进程的内存分配 213 13.3 进程的创建 214 13.3.1 调用fork创建进程 214 13.3.2 调用exec系列函数执行程序 216 13.3.3 调用system创建进程 219 13.4 进程的终止 220 13.4.1 调用exit退出进程 220 13.4.2 调用wait等待进程退出 220 13.5 小结 222 第14章 信号 223 14.1 信号的基本概念 223 14.1.1 信号的定义 223 14.1.2 信号的来源 224 14.1.3 信号的分类 224 14.2 信号的安装及处理 226 14.2.1 信号的处理方式 226 14.2.2 用signal安装信号 226 14.2.3 用sigaction安装信号 228 14.2.4 信号的阻塞处理 230 14.2.5 信号集的操作 232 14.2.6 未决信号的处理 233 14.2.7 等待信号 234 14.2.8 信号处理函数的实现 236 14.3 信号的发送 238 14.3.1 使用kill发送信号 238 14.3.2 使用sigqueue发送信号 239 14.4 SIGALRM信号 240 14.4.1 安装SIGALRM信号 240 14.4.2 设置定时器 241 14.5 SIGCLD信号 242 14.5.1 子进程的退出过程 242 14.5.2 SIGCLD信号的处理 243 14.6 小结 244 第四篇 进程间通信(IPC)及网络编程 第15章 进程间通信——管道 246 15.1 进程间通信概念 246 15.2 管道的概念及分类 247 15.2.1 管道的概念及特点 247 15.2.2 管道的分类 248 15.3 管道编程 249 15.3.1 创建管道 249 15.3.2 读写管道 251 15.3.3 关闭管道 253 15.3.4 管道I/O 253 15.4 命名管道编程 255 15.4.1 创建管道 255 15.4.2 打开管道及读写 257 15.4.3 管道的删除 259 15.5 小结 259 第16章 进程间通信——消息队列 260 16.1 System V进程间通信概述 260 16.1.1 Shell环境控制IPC 260 16.1.2 进程间通信关键字 262 16.1.3 进程间通信标识符 262 16.1.4 IPC权限许可结构 263 16.2 消息队列基本概念 264 16.2.1 队列 264 16.2.2 消息 264 16.2.3 消息队列 265 16.3 消息队列编程 266 16.3.1 键值生成函数 266 16.3.2 创建消息队列 267 16.3.3 消息发送 270 16.3.4 消息接收 272 16.3.5 控制消息队列 274 16.4 小结 276 第17章 进程间通信——共享内存 277 17.1 共享内存基本概念 277 17.1.1 共享内存编程模型 277 17.1.2 共享内存的映射 277 17.1.3 共享内存数据结构 278 17.2 共享内存编程 279 17.2.1 创建共享内存 279 17.2.2 映射共享内存 281 17.2.3 删除共享内存映射 282 17.2.4 控制共享内存 283 17.3 小结 285 第18章 进程间通信——信号量 286 18.1 PV操作原理 286 18.1.1 PV操作的来源 286 18.1.2 PV操作的定义 287 18.1.3 PV操作的应用 288 18.2 信号量基本概念 290 18.2.1 Linux信号量简介 290 18.2.2 信号量的控制结构 291 18.3 信号量编程 291 18.3.1 创建信号量 291 18.3.2 信号量操作 293 18.3.3 信号量控制 296 18.4 综合实例——利用信号量实现生产者-消费者模型 299 18.4.1 需求 300 18.4.2 需求分析与设计 300 18.4.3 实现代码及分析 300 18.5 小结 303 第19章 Linux网络环境 304 19.1 计算机网络基础 304 19.1.1 计算机网络分类 304 19.1.2 网络拓扑结构 305 19.1.3 网络通信协议 306 19.1.4 OSI参考模型 307 19.2 TCP/IP协议概述 309 19.2.1 TCP/IP分层模型 309 19.2.2 TCP/IP协议族 310 19.2.3 网络地址 311 19.2.4 端口 313 19.3 客户机/服务器模型 314 19.4 传输控制协议 316 19.4.1 连接建立 316 19.4.2 连接关闭 316 19.4.3 TCP数据报格式 318 19.5 用户数据报协议 319 19.6 小结 319 第20章 基本套接口编程 320 20.1 套接口编程简述 320 20.1.1 半相关与全相关 321 20.1.2 地址族与协议族 321 20.1.3 面向连接与面向无连接 322 20.1.4 套接口类型 322 20.1.5 字节序 323 20.1.6 套接口连接方式 324 20.1.7 数据传输方式 325 20.2 套接口数据结构 326 20.2.1 套接口地址结构 326 20.2.2 通用套接口地址结构 327 20.2.3 主机名称数据结构 327 20.2.4 服务名称数据结构 329 20.2.5 通用数据收发结构 330 20.3 基本套接口函数 331 20.3.1 字节操作函数 331 20.3.2 字节序操作函数 333 20.3.3 地址转换函数 334 20.3.4 套接口函数 337 20.4 套接口选项 352 20.4.1 套接口选项函数 352 20.4.2 SO_KEEPALIVE选项 352 20.4.3 SO_LINGER选项 353 20.4.4 SO_RCVBUF和SO_SNDBUF选项 355 20.4.5 SO_RCVTIMEO和SO_SNDTIMEO选项 356 20.4.6 SO_REUSEADDR和SO_REUSEPORT选项 357 20.5 TCP套接口编程 357 20.5.1 重复服务器编程 357 20.5.2 并发服务器编程 357 20.6 UDP套接口编程 362 20.6.1 UDP编程模型 363 20.6.2 UDP客户/服务器编程 363 20.7 小结 366 第21章 综合实例——银行代理收费服务器 367 21.1 程序需求 367 21.2 程序实现 367 21.3 小结 379 附录 Linux下常见C函数字母索引 380 |
商品评论(0条)