Linux高级程序设计(第3版)

Linux高级程序设计(第3版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 人民邮电出版社
2012-11
版次: 3
ISBN: 9787115292902
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 486页
字数: 953千字
正文语种: 简体中文
  •   《Linux高级程序设计(第3版)》围绕Linux操作系统“一切都是文件”的特点,讲述了Linux操作系统下应用层“一段执行单元(进程)对系统资源(CPU资源、各类文件资源)的管理”。详细介绍了Linux系统编程环境及编程工具(GCC/Makefile/GDB)、文件管理(文件属性控制、ANSI以及POSIX标准下文件读写操作、终端编程)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)、线程与信号以及BSD socket编程中的TCP、UDP、原始套接口、网络服务器应用开发等内容,并对Linux系统下的音频应用程序开发做了讲解。  《Linux高级程序设计(第3版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。 第1章 Linux下C语言开发环境1.1 Linux操作系统简介1.1.1 Linux操作系统简介1.1.2 GNU/Linux简介1.1.3 相关术语介绍1.2 Linux开发初步1.2.1 Linux下C程序标准1.2.2 库函数和系统调用1.2.3 在线文档介绍1.2.4 获取错误信息1.3 部分常用工具简介1.3.1 tar打包器1.3.2 Linux常用命令及工具1.4 Linux下编码风格1.4.1 GNU编码规范1.4.2 Linux内核编码规范第2章 Linux下C语言开发工具2.1 常用编辑工具2.1.1 VIM编辑器2.1.2 Emacs编辑器2.1.3 Source Insight工具2.2 GCC/GDB编译调试工具基础2.2.1 GCC/G++简单介绍2.2.2 GDB调试工具简介2.2.3 使用GCC编译C程序示例2.2.4 使用g++编译C++程序示例2.2.5 GDB演示示例第3章 Linux进程存储管理3.1 Linux程序存储结构与进程结构3.1.1 Linux可执行文件结构3.1.2 Linux进程结构3.1.3 C变量及函数存储类型3.1.4 栈和堆的区别3.1.5 示例:查看代码中各数据存储位置3.1.6 常见内存错误示例分析3.2 ANSI C动态内存管理3.2.1 内存分配的基本方式3.2.2 示例:为程序申请动态内存空间3.2.3 内存数据管理函数3.3 Valgrind及valkyrie内存管理工具3.3.1 Valgrind介绍3.3.2 Valgrind安装与使用3.3.3 valgrind图形化工具Valkyrie3.3.4 内存检测示例3.4 Linux进程环境及系统限制3.4.1 进程与命令行选项及参数3.4.2 进程与环境变量3.4.3 Linux系统限制3.4.4 Linux时间管理第4章 ANSI C文件IO管理4.1 文件及文件流4.1.1 文件与流的基本概念4.1.2 标准流及流主要功能4.1.3 文件流指针4.1.4 缓冲区类型4.1.5 指定流缓冲区4.2 ANSI C文件I/O操作4.2.1 打开关闭文件4.2.2 读/写文件流4.2.3 文件流定位4.2.4 实现文件复制操作示例4.3 流的格式化输入/输出操作4.3.1 printf/scanf函数分析4.3.2 fprintf/fscanf函数分析4.3.3 sprintf函数分析4.3.4 sscanf函数分析第5章 POSIX文件及目录管理5.1 文件描述符与内核文件表项5.1.1 文件流与文件描述符的区别5.1.2 文件表结构图5.1.3 文件描述符与文件流的转换操作5.2 POSIX标准下文件IO管理5.2.1 创建/打开/关闭文件5.2.2 文件控制fcntl5.2.3 读/写文件内容5.2.4 使用POSIX IO实现大于2G文件复制5.2.5 文件定位5.2.6 同步内核缓冲区5.2.7 映射文件到内存5.2.8 锁定/解锁文件5.3 目录流基本操作5.3.1 打开/关闭目录文件5.3.2 读/写目录内容5.3.3 定位目录位置5.3.4 添加和删除目录5.3.5 当前工作路径操作5.3.6 文件流、目录流、文件描述符总结5.4 应用案例:递归文件目录复制操作5.4.1 应用需求及流程图5.4.2 示例代码第6章 普通文件、连接文件及目录文件属性管理6.1 Linux文件系统管理6.1.1 Linux下VFS虚拟文件系统6.1.2 ext2文件系统结构6.1.3 目录文件及常规文件存储方法6.2 Linux系统下文件类型及属性6.2.1 Linux文件类型及权限6.2.2 Linux文件类型6.2.3 文件权限修饰位6.2.4 文件访问权限位6.3 Linux文件属性管理6.3.1 读取文件属性6.3.2 修改文件权限操作6.3.3 修改系统umask值6.3.4 修改文件的拥有者及组6.3.5 用户名/组名与UID/GID的转换6.3.6 创建/删除硬连接6.3.7 符号连接文件特殊操作6.3.8 文件时间属性修改与时间处理6.4 示例:ls ?l以排序方式列出目录信息6.4.1 需求及知识点涵盖6.4.2 流程及源代码实现6.5 示例:实现tree系统命令第7章 终端及串口编程7.1 终端设备类型7.1.1 实际的物理串口7.1.2 控制台终端7.1.3 虚拟终端7.1.4 当前终端7.2 终端属性控制7.2.1 读取/设置终端属性信息7.2.2 c_cflag终端控制选项7.2.3 c_lflag终端本地选项7.2.4 c_iflag终端输入选项7.2.5 c_oflag终端输出选项7.2.6 c_cc[NCCS]终端控制字符7.2.7 IOCTLs控制终端7.2.8 进程与终端7.3 串口编程7.3.1 串口物理设备7.3.2 串口终端基本操作7.3.3 串口编程示例7.4 控制台终端应用基础7.4.1 终端属性设置7.4.2 控制命令基本格式7.4.3 从控制台终端获取信息不回显第8章 Linux进程管理与程序开发8.1 进程环境及进程属性8.1.1 程序、进程与进程资源8.1.2 进程状态8.1.3 进程基本属性8.1.4 进程用户属性8.2 进程管理及控制8.2.1 创建进程8.2.2 在进程中运行新代码8.2.3 回收进程用户空间资源8.2.4 回收内核空间资源8.2.5 孤儿进程与僵死进程8.2.6 修改进程用户相关信息8.3 Linux特殊进程8.3.1 守候进程及其创建过程8.3.2 日志信息及其管理8.3.3 守候进程应用示例第9章 进程间通信--管道9.1 进程间通信--PIPE9.1.1 无名管道概念9.1.2 无名管道文件操作的特殊性9.1.3 文件描述符重定向9.1.4 实现who|sort9.1.5 流重定向9.2 进程间通信--FIFO9.2.1 有名管道概念9.2.2 有名管道管理及其特殊性9.2.3 管道基本特点总结第10章 Linux异步信号处理机制10.1 Linux常见信号与处理10.1.1 信号与中断10.1.2 信号基本概念10.1.3 信号的生命周期10.1.4 发送信号10.2 安装信号与捕获信号10.2.1 信号处理办法10.2.2 signal安装信号10.2.3 sigaction安装信号10.2.4 signal的系统漏洞10.3 安装信号与捕获信号10.3.1 设置进程屏蔽信号集10.3.2 获取当前未决的信号10.3.3 信号集合操作10.3.4 信号集合操作应用示例10.4 等待信号10.4.1 pause函数10.4.2 sigsuspend函数10.5 信号应用实例第11章 System V进程间通信11.1 System V IPC基础11.1.1 key值和ID值11.1.2 拥有者及权限11.2 消息队列11.2.1 消息队列IPC原理11.2.2 Linux消息队列管理11.2.3 消息队列应用实例11.3 信号量通信机制11.3.1 信号量IPC原理11.3.2 Linux信号量管理操作11.3.3 SEM_UNDO参数的应用11.3.4 使用信号量实现生产消费问题11.4 共享内存11.4.1 共享内存IPC原理11.4.2 Linux共享内存管理11.4.3 共享内存的权限管理示例11.4.4 共享内存处理应用示例第12章 Linux多线程编程12.1 线程基本概念与线程操作12.1.1 线程与进程的对比12.1.2 创建线程12.1.3 线程退出与等待12.1.4 取消线程12.1.5 线程与私有数据12.2 线程同步机制12.2.1 互斥锁通信机制12.2.2 条件变量通信机制12.2.3 读写锁通信机制12.3 多线程异步管理--信号12.3.1 线程信号管理12.3.2 线程信号应用实例12.4 线程属性控制12.4.1 获取线程ID12.4.2 初始化线程属性对象12.4.3 获取/设置线程detachstate属性12.4.4 获取/设置线程栈相关属性第13章 Linux Socket网络编程基础13.1 网络通信基础13.1.1 TCP/IP协议簇基础13.1.2 IPv4协议基础13.1.3 点分十进制IP地址与二进制IP地址转换13.1.4 网络数据包封包与拆包过程13.1.5 字节顺序与大小端问题13.2 BSD Socket网络通信编程13.2.1 BSD TCP通信编程流程13.2.2 BSD Socket网络编程API13.3 使用TCP实现简单聊天程序13.3.1 服务器端代码分析13.3.2 客户器端代码分析13.4 网络调试工具13.4.1 tcpdump的使用13.4.2 netstat工具使用13.4.3 lsof工具使用第14章 TCP高级应用14.1 文件I/O方式比较14.2 I/O阻塞与非阻塞操作14.2.1 阻塞与非阻塞基本概念14.2.2 非阻塞应用示例14.3 socket多路复用应用14.3.1 select()与pselect函数介绍14.3.2 poll与ppoll函数14.3.3 多路复用应用示例14.4 控制socket文件描述符属性14.4.1 set/getsockopt()修改socket属性14.4.2 fcntl控制socket14.4.3 ioctl控制文件描述符第15章 UDP网络编程应用15.1 UDP网络编程基础15.1.1 UDP网络通信流程15.1.2 使用AF_INET实现UDP点对点通信示例15.2 UDP广播通信15.2.1 广播地址与广播通信15.2.2 UDP广播通信示例15.3 UDP组播通信15.3.1 组播地址与组播通信15.3.2 UDP组播应用示例15.4 socket信号驱动15.4.1 异步信号处理机制流程15.4.2 信号驱动方式处理UDP数据15.5 域名与IP信息解析15.5.1 Linux下域名解析过程15.5.2 通过域名返回主机信息15.5.3 通过域名和IP返回主机信息15.5.4 getaddrinfo获取主机信息第16章 网络服务器应用设计16.1 迭代服务器设计16.1.1 xinetd服务介绍16.1.2 时间服务器应用16.2 多进程/多线程并发服务器设计16.2.1 多进程实现多客户端16.2.2 多线程实现多客户端16.2.3 基于HTTP的多进程并发文件服务器16.3 进程池/线程池服务器设计16.3.1 进程池/线程池服务器模型16.3.2 线程池文件服务器示例第17章 本地通信与原始套接口17.1 sock实现本地进程间通信17.1.1 使用socket实现本地进程通信17.1.2 使用AF_UNIX实现本机数据流17.2 本地socket传递文件描述符17.2.1 sendmsg/recvmsg函数17.2.2 传递文件描述符示例17.3 原始套应用程序开发17.3.1 原始套接口基本原理17.3.2 原始套接口实现ping应用程序17.3.3 原始套实现DOS攻击第18章 音频应用程序开发基础18.1 WAV音频文件格式分析18.1.1 数字音频基本参数18.1.2 WAV音频文件结构18.1.3 读出WAV格式文件头信息18.4.4 MP3文件格式18.2 OSS音频设备编程18.2.1 OSS音频设备基本架构18.2.2 OSS音频编程应用示例18.3 ALSA音频设备编程18.3.1 ALSA基本架构18.3.2 alsa-libs基本应用18.3.3 ALSA音频编程示例
  • 内容简介:
      《Linux高级程序设计(第3版)》围绕Linux操作系统“一切都是文件”的特点,讲述了Linux操作系统下应用层“一段执行单元(进程)对系统资源(CPU资源、各类文件资源)的管理”。详细介绍了Linux系统编程环境及编程工具(GCC/Makefile/GDB)、文件管理(文件属性控制、ANSI以及POSIX标准下文件读写操作、终端编程)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)、线程与信号以及BSD socket编程中的TCP、UDP、原始套接口、网络服务器应用开发等内容,并对Linux系统下的音频应用程序开发做了讲解。  《Linux高级程序设计(第3版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。
  • 目录:
    第1章 Linux下C语言开发环境1.1 Linux操作系统简介1.1.1 Linux操作系统简介1.1.2 GNU/Linux简介1.1.3 相关术语介绍1.2 Linux开发初步1.2.1 Linux下C程序标准1.2.2 库函数和系统调用1.2.3 在线文档介绍1.2.4 获取错误信息1.3 部分常用工具简介1.3.1 tar打包器1.3.2 Linux常用命令及工具1.4 Linux下编码风格1.4.1 GNU编码规范1.4.2 Linux内核编码规范第2章 Linux下C语言开发工具2.1 常用编辑工具2.1.1 VIM编辑器2.1.2 Emacs编辑器2.1.3 Source Insight工具2.2 GCC/GDB编译调试工具基础2.2.1 GCC/G++简单介绍2.2.2 GDB调试工具简介2.2.3 使用GCC编译C程序示例2.2.4 使用g++编译C++程序示例2.2.5 GDB演示示例第3章 Linux进程存储管理3.1 Linux程序存储结构与进程结构3.1.1 Linux可执行文件结构3.1.2 Linux进程结构3.1.3 C变量及函数存储类型3.1.4 栈和堆的区别3.1.5 示例:查看代码中各数据存储位置3.1.6 常见内存错误示例分析3.2 ANSI C动态内存管理3.2.1 内存分配的基本方式3.2.2 示例:为程序申请动态内存空间3.2.3 内存数据管理函数3.3 Valgrind及valkyrie内存管理工具3.3.1 Valgrind介绍3.3.2 Valgrind安装与使用3.3.3 valgrind图形化工具Valkyrie3.3.4 内存检测示例3.4 Linux进程环境及系统限制3.4.1 进程与命令行选项及参数3.4.2 进程与环境变量3.4.3 Linux系统限制3.4.4 Linux时间管理第4章 ANSI C文件IO管理4.1 文件及文件流4.1.1 文件与流的基本概念4.1.2 标准流及流主要功能4.1.3 文件流指针4.1.4 缓冲区类型4.1.5 指定流缓冲区4.2 ANSI C文件I/O操作4.2.1 打开关闭文件4.2.2 读/写文件流4.2.3 文件流定位4.2.4 实现文件复制操作示例4.3 流的格式化输入/输出操作4.3.1 printf/scanf函数分析4.3.2 fprintf/fscanf函数分析4.3.3 sprintf函数分析4.3.4 sscanf函数分析第5章 POSIX文件及目录管理5.1 文件描述符与内核文件表项5.1.1 文件流与文件描述符的区别5.1.2 文件表结构图5.1.3 文件描述符与文件流的转换操作5.2 POSIX标准下文件IO管理5.2.1 创建/打开/关闭文件5.2.2 文件控制fcntl5.2.3 读/写文件内容5.2.4 使用POSIX IO实现大于2G文件复制5.2.5 文件定位5.2.6 同步内核缓冲区5.2.7 映射文件到内存5.2.8 锁定/解锁文件5.3 目录流基本操作5.3.1 打开/关闭目录文件5.3.2 读/写目录内容5.3.3 定位目录位置5.3.4 添加和删除目录5.3.5 当前工作路径操作5.3.6 文件流、目录流、文件描述符总结5.4 应用案例:递归文件目录复制操作5.4.1 应用需求及流程图5.4.2 示例代码第6章 普通文件、连接文件及目录文件属性管理6.1 Linux文件系统管理6.1.1 Linux下VFS虚拟文件系统6.1.2 ext2文件系统结构6.1.3 目录文件及常规文件存储方法6.2 Linux系统下文件类型及属性6.2.1 Linux文件类型及权限6.2.2 Linux文件类型6.2.3 文件权限修饰位6.2.4 文件访问权限位6.3 Linux文件属性管理6.3.1 读取文件属性6.3.2 修改文件权限操作6.3.3 修改系统umask值6.3.4 修改文件的拥有者及组6.3.5 用户名/组名与UID/GID的转换6.3.6 创建/删除硬连接6.3.7 符号连接文件特殊操作6.3.8 文件时间属性修改与时间处理6.4 示例:ls ?l以排序方式列出目录信息6.4.1 需求及知识点涵盖6.4.2 流程及源代码实现6.5 示例:实现tree系统命令第7章 终端及串口编程7.1 终端设备类型7.1.1 实际的物理串口7.1.2 控制台终端7.1.3 虚拟终端7.1.4 当前终端7.2 终端属性控制7.2.1 读取/设置终端属性信息7.2.2 c_cflag终端控制选项7.2.3 c_lflag终端本地选项7.2.4 c_iflag终端输入选项7.2.5 c_oflag终端输出选项7.2.6 c_cc[NCCS]终端控制字符7.2.7 IOCTLs控制终端7.2.8 进程与终端7.3 串口编程7.3.1 串口物理设备7.3.2 串口终端基本操作7.3.3 串口编程示例7.4 控制台终端应用基础7.4.1 终端属性设置7.4.2 控制命令基本格式7.4.3 从控制台终端获取信息不回显第8章 Linux进程管理与程序开发8.1 进程环境及进程属性8.1.1 程序、进程与进程资源8.1.2 进程状态8.1.3 进程基本属性8.1.4 进程用户属性8.2 进程管理及控制8.2.1 创建进程8.2.2 在进程中运行新代码8.2.3 回收进程用户空间资源8.2.4 回收内核空间资源8.2.5 孤儿进程与僵死进程8.2.6 修改进程用户相关信息8.3 Linux特殊进程8.3.1 守候进程及其创建过程8.3.2 日志信息及其管理8.3.3 守候进程应用示例第9章 进程间通信--管道9.1 进程间通信--PIPE9.1.1 无名管道概念9.1.2 无名管道文件操作的特殊性9.1.3 文件描述符重定向9.1.4 实现who|sort9.1.5 流重定向9.2 进程间通信--FIFO9.2.1 有名管道概念9.2.2 有名管道管理及其特殊性9.2.3 管道基本特点总结第10章 Linux异步信号处理机制10.1 Linux常见信号与处理10.1.1 信号与中断10.1.2 信号基本概念10.1.3 信号的生命周期10.1.4 发送信号10.2 安装信号与捕获信号10.2.1 信号处理办法10.2.2 signal安装信号10.2.3 sigaction安装信号10.2.4 signal的系统漏洞10.3 安装信号与捕获信号10.3.1 设置进程屏蔽信号集10.3.2 获取当前未决的信号10.3.3 信号集合操作10.3.4 信号集合操作应用示例10.4 等待信号10.4.1 pause函数10.4.2 sigsuspend函数10.5 信号应用实例第11章 System V进程间通信11.1 System V IPC基础11.1.1 key值和ID值11.1.2 拥有者及权限11.2 消息队列11.2.1 消息队列IPC原理11.2.2 Linux消息队列管理11.2.3 消息队列应用实例11.3 信号量通信机制11.3.1 信号量IPC原理11.3.2 Linux信号量管理操作11.3.3 SEM_UNDO参数的应用11.3.4 使用信号量实现生产消费问题11.4 共享内存11.4.1 共享内存IPC原理11.4.2 Linux共享内存管理11.4.3 共享内存的权限管理示例11.4.4 共享内存处理应用示例第12章 Linux多线程编程12.1 线程基本概念与线程操作12.1.1 线程与进程的对比12.1.2 创建线程12.1.3 线程退出与等待12.1.4 取消线程12.1.5 线程与私有数据12.2 线程同步机制12.2.1 互斥锁通信机制12.2.2 条件变量通信机制12.2.3 读写锁通信机制12.3 多线程异步管理--信号12.3.1 线程信号管理12.3.2 线程信号应用实例12.4 线程属性控制12.4.1 获取线程ID12.4.2 初始化线程属性对象12.4.3 获取/设置线程detachstate属性12.4.4 获取/设置线程栈相关属性第13章 Linux Socket网络编程基础13.1 网络通信基础13.1.1 TCP/IP协议簇基础13.1.2 IPv4协议基础13.1.3 点分十进制IP地址与二进制IP地址转换13.1.4 网络数据包封包与拆包过程13.1.5 字节顺序与大小端问题13.2 BSD Socket网络通信编程13.2.1 BSD TCP通信编程流程13.2.2 BSD Socket网络编程API13.3 使用TCP实现简单聊天程序13.3.1 服务器端代码分析13.3.2 客户器端代码分析13.4 网络调试工具13.4.1 tcpdump的使用13.4.2 netstat工具使用13.4.3 lsof工具使用第14章 TCP高级应用14.1 文件I/O方式比较14.2 I/O阻塞与非阻塞操作14.2.1 阻塞与非阻塞基本概念14.2.2 非阻塞应用示例14.3 socket多路复用应用14.3.1 select()与pselect函数介绍14.3.2 poll与ppoll函数14.3.3 多路复用应用示例14.4 控制socket文件描述符属性14.4.1 set/getsockopt()修改socket属性14.4.2 fcntl控制socket14.4.3 ioctl控制文件描述符第15章 UDP网络编程应用15.1 UDP网络编程基础15.1.1 UDP网络通信流程15.1.2 使用AF_INET实现UDP点对点通信示例15.2 UDP广播通信15.2.1 广播地址与广播通信15.2.2 UDP广播通信示例15.3 UDP组播通信15.3.1 组播地址与组播通信15.3.2 UDP组播应用示例15.4 socket信号驱动15.4.1 异步信号处理机制流程15.4.2 信号驱动方式处理UDP数据15.5 域名与IP信息解析15.5.1 Linux下域名解析过程15.5.2 通过域名返回主机信息15.5.3 通过域名和IP返回主机信息15.5.4 getaddrinfo获取主机信息第16章 网络服务器应用设计16.1 迭代服务器设计16.1.1 xinetd服务介绍16.1.2 时间服务器应用16.2 多进程/多线程并发服务器设计16.2.1 多进程实现多客户端16.2.2 多线程实现多客户端16.2.3 基于HTTP的多进程并发文件服务器16.3 进程池/线程池服务器设计16.3.1 进程池/线程池服务器模型16.3.2 线程池文件服务器示例第17章 本地通信与原始套接口17.1 sock实现本地进程间通信17.1.1 使用socket实现本地进程通信17.1.2 使用AF_UNIX实现本机数据流17.2 本地socket传递文件描述符17.2.1 sendmsg/recvmsg函数17.2.2 传递文件描述符示例17.3 原始套应用程序开发17.3.1 原始套接口基本原理17.3.2 原始套接口实现ping应用程序17.3.3 原始套实现DOS攻击第18章 音频应用程序开发基础18.1 WAV音频文件格式分析18.1.1 数字音频基本参数18.1.2 WAV音频文件结构18.1.3 读出WAV格式文件头信息18.4.4 MP3文件格式18.2 OSS音频设备编程18.2.1 OSS音频设备基本架构18.2.2 OSS音频编程应用示例18.3 ALSA音频设备编程18.3.1 ALSA基本架构18.3.2 alsa-libs基本应用18.3.3 ALSA音频编程示例
查看详情
12
好书推荐 / 更多
Linux高级程序设计(第3版)
传统十论:本土社会的制度、文化与其变革
秦晖 著
Linux高级程序设计(第3版)
翁达杰作品系列:英国病人(精装)
[加]迈克尔·翁达杰 著;丁骏 译
Linux高级程序设计(第3版)
软件体的生命周期:特德·姜科幻小说集
[美]特德·姜
Linux高级程序设计(第3版)
汉唐文学与文献论考
陈尚君 著
Linux高级程序设计(第3版)
中国佛学源流略讲
吕澂 著
Linux高级程序设计(第3版)
明清稿抄校本鉴定
陈先行、石菲 著
Linux高级程序设计(第3版)
瓦檐下的旧器物
黄孝纪
Linux高级程序设计(第3版)
索恩丛书·自由的流亡者:永失美国与大英帝国的东山再起(套装全2册)
马娅·亚桑诺夫(Maya Jasanoff) 著;马睿 译
Linux高级程序设计(第3版)
维米尔
北寺 译 者;[英]路德维希·戈德沙伊德(Ludwig Goldscheider)
Linux高级程序设计(第3版)
做工的人
林立青 著;赖小路 摄影
Linux高级程序设计(第3版)
与绝迹之鸟的短暂邂逅
[美]本·方登 著
Linux高级程序设计(第3版)
[日]吉田修一 Yoshida Shuichi 著;岳远坤 译