Linux环境C程序设计徐诚
部分旧书采用了标准图片,会可能出现少部分不同印次出版不同封面的情况,旧书无光盘、腰封、书衣、附件等,如有其他问题可咨询客服。
¥
21.63
2.7折
¥
79.8
八品
库存2件
作者徐诚
出版社清华大学出版社
ISBN9787302347927
出版时间2014-02
装帧平装
开本16开
定价79.8元
货号1546308319894423041
上书时间2024-11-14
商品详情
- 品相描述:八品
- 商品描述
-
前言
Linux系统基于开源软件思想而产生,而且促进了开源软件技术的发展,这种先进的软件设计思想引领着全球软件业的变革,为软件技术的发展带来了强劲的动力。随着Linux系统的发展和广泛应用,今天的Linux系统已经占据了绝大多数嵌入式系统,并在PC服务器市场也占有很大份额,其桌面系统的普及率也逐年上升。越来越多的开发者希望了解Linux系统开发技术,特别是基于Linux系统上最流行的C语言开发技术。
笔者一直从事技术研究,曾经为《程序员》、《电脑报》和CSDN社区翻译和编撰了很多相关的技术文章,但觉得独立的文章对普通读者帮助不大,所以特写本书,希望将自己的经验同更多读者分享。
本书是获得了大量读者好评的“Linux典藏大系”中的《Linux环境C程序设计》的第2版。本书全面介绍了Linux系统上C语言开发技术,内容由浅入深,适合各个水平阶段的读者学习。同时,笔者将Linux所依存的开源软件思想介绍给读者,并将其与当前流行的软件工程思想结合,通过案例贯穿于全书,力求使读者学习完本书后,不但能掌握开发技术,还能获得与国际一流的软件工程师共同工作的能力。
关于“Linux典藏大系”
“Linux典藏大系”是清华大学出版社自2010年1月以来陆续推出的一个图书系列,截止2012年底,已经出版了10余个品种。该系列图书涵盖了Linux技术的方方面面,可以满足各个层次和各个领域的读者学习Linux技术的需求。该系列图书自出版以来获得了广大读者的好评,已经成为了Linux图书市场上最耀眼的明星品牌之一。其销量在同类图书中也名列前茅,其中一些图书还获得了“51CTO读书频道”颁发的“最受读者喜爱的原创IT技术图书奖”。该系列图书出版过程中也得到了国内Linux领域最知名的技术社区ChinaUnix(简称CU)的大力支持和帮助,读者在CU社区中就图书的内容与活跃在CU社区中的Linux技术爱好者进行广泛交流,取得了良好的学习效果。
关于本书第2版
本书第1版出版后深受读者好评,并被ChinaUNIX技术社区所推荐。但是随着Linux技术的发展,本书第1版的内容与Linux各个新版本有一定出入,这给读者的学习造成了一些不便。应广大读者的要求,我们结合Linux技术的最新发展推出第2版图书。
导语摘要
Linux系统基于开源软件思想而产生,而且促进了开源软件技术的发展,这种先进的软件设计思想引领着全球软件业的变革,为软件技术的发展带来了强劲的动力。随着Linux系统的发展和广泛应用,今天的Linux系统已经占据了绝大多数嵌入式系统,并在PC服务器市场也占有很大份额,其桌面系统的普及率也逐年上升。
本书是获得了大量读者好评的“Linux典藏大系”中的《Linux环境C程序设计》的第2版。本书全面介绍了Linux系统上C语言开发技术,内容由浅入深,适合各个水平阶段的读者学习。同时,笔者将Linux所依存的开源软件思想介绍给读者,并将其与当前流行的软件工程思想结合,通过案例贯穿于全书,力求使读者学习完本书后,不但能掌握开发技术,还能获得与国际一流的软件工程师共同工作的能力。本书由徐诚浩等编著。
作者简介
徐诚,毕业于华中科技大学计算机通信工程专业。擅长C与C++编程,精通Linux内核及其开发技术。从事Linux系统开发工作多年,拥有丰富的系统开发经验。曾多次在专业刊物上发表过技术文章。并长期在CSDN担任社区专家。2008年独立开发的基于移动Linux系统的MlSSMOBLIN人工智能助手软件,获得TIntel公司举办的YourMove软件大赛中国区的第五名。
目录
第1篇 Linux系统概述及开发环境搭建
第1章 Linux系统概述和安装( 教学视频:31分钟)
1.1 引言
1.1.1 GNU项目简介
1.1.2 Linux起源
1.1.3 Linux发展现状
1.1.4 免费软件与开源软件
1.2 Linux内核与版本
1.2.1 Linux内核介绍
1.2.2 Linux所支持的硬件平台
1.2.3 常用Linux版本
1.3 系统安装
1.3.1 安装前的准备
1.3.2 系统需求
1.3.3 硬盘分区
1.3.4 以图形方式安装Linux
1.3.5 升级最新内核
1.3.6 安装中文支持
1.4 小结
第2章 Linux基本操作( 教学视频:29分钟)
2.1 登录
2.1.1 shell程序
2.1.2 控制台
2.1.3 终端
2.2 文件和目录
2.2.1 文件系统
2.2.2 文件名
2.2.3 路径名
2.2.4 工作目录
2.2.5 起始目录
2.3 输入和输出
2.3.1 文件描述符
2.3.2 标准输入、标准输出和标准错误
2.3.3 标准输入输出函数
2.4 小结
第3章 Linux GCC/G++编译器与调试器( 教学视频:31分钟)
3.1 GCC/G++编译器
3.1.1 GCC/G++编译器的安装
3.1.2 GCC/G++编译命令
3.1.3 GCC/G++编译选项
3.1.4 GCC/G++编译器的执行过程
3.2 程序和进程
3.2.1 程序
3.2.2 进程和PID
3.3 ANSI C标准
3.3.1 函数原型
3.3.2 类属指针
3.3.3 原始系统数据类型
3.4 编译hello world
3.4.1 使用VI编写源代码
3.4.2 程序的编译与连接
3.4.3 使用终端运行程序
3.5 GDB调试器
3.5.1 GDB调试器概述
3.5.2 GDB调试器安装
3.5.3 GDB常用调试命令
3.5.4 在GDB下运行程序
3.5.5 检查数据
3.6 小结
第4章 Linux开发环境( 教学视频:14分钟)
4.1 文本编辑工具
4.1.1 VIM的使用方法
4.1.2 Emacs的使用方法
4.2 集成开发环境
4.2.1 Eclipse介绍
4.2.2 Kdevelop介绍
4.3 使用Eclipse开发C/C++语言程序
4.3.1 安装与配置Eclipse
4.3.2 Eclipse界面
4.3.3 编译与运行源代码
4.3.4 Debug源代码
4.4 小结
第2篇 C/C++语言基础
第5章 C语言编程基础( 教学视频:27分钟)
5.1 程序设计语言的发展
5.1.1 机器语言
5.1.2 汇编语言
5.1.3 高级语言
5.2 C语言的特点
5.2.1 C语言是中级语言
5.2.2 C语言是结构化语言
5.2.3 C语言是程序员的语言
5.3 C语言的程序结构
5.3.1 基本程序结构
5.3.2 函数库和链接
5.3.3 开发一个C语言程序
5.3.4 C语言的关键字
5.4 算法
5.4.1 流程图与算法的结构化描述
5.4.2 用N-S图描述算法
5.4.3 用PAD图描述算法
5.5 软件工程概览
5.5.1 认识软件工程
5.5.2 瀑布模型及其改进
5.5.3 迭代发布模型
5.5.4 朴素软件工程思想
5.6 小结
第6章 数据类型、运算符和表达式( 教学视频:25分钟)
6.1 C语言的数据类型
6.1.1 基本类型的字长与范围
6.1.2 聚合类型与修饰符
6.2 常量与变量
6.2.1 标识符命名
6.2.2 常量
6.2.3 变量
6.3 整型数据
6.3.1 整型常量
6.3.2 整型变量
6.4 浮点型数据
6.4.1 浮点型常量
6.4.2 浮点型变量
6.5 字符型数据
6.5.1 字符常量
6.5.2 字符串常量
6.5.3 转义字符
6.5.4 符号常量
6.5.5 字符变量
6.6 运算符
6.6.1 算术运算符
6.6.2 自增和自减
6.6.3 关系和逻辑运算符
6.6.4 位操作符
6.6.5 问号操作符
6.6.6 逗号操作符
6.6.7 优先级
6.7 表达式
6.7.1 表达式中的类型转换
6.7.2 构成符cast
6.7.3 空格与括号
6.7.4 C语言中的简写形式
6.8 C语言的预处理命令
6.8.1 宏替换命令
6.8.2 终止编译命令
6.8.3 文件包含命令
6.8.4 条件编译命令
6.8.5 修改行号命令
6.8.6 编译指示命令
6.8.7 预定义的宏名
6.8.8 注释
6.9 小结
第7章 程序控制结构( 教学视频:19分钟)
7.1 程序的3种基本结构
7.2 数据的输入与输出
7.2.1 scanf()函数
7.2.2 printf()函数
7.2.3 getchar()函数与putchar()函数
7.3 条件控制语句
7.3.1 if语句
7.3.2 switch语句
7.4 循环控制语句
7.4.1 while语句
7.4.2 do-while语句
7.4.3 for语句
7.4.4 break与continue语句
7.5 媒体播放器——建立程序结构
7.5.1 编写伪代码
7.5.2 建立媒体播放器的程序结构
7.6 小结
第8章 数组与指针( 教学视频:19分钟)
8.1 一维数组
8.1.1 一维数组的一般形式
8.1.2 字符串使用的一维数组
8.2 二维数组
8.2.1 二维数组的一般形式
8.2.2 二维字符串数组
8.3 多维数组
8.4 指针与指针变量
8.5 指针变量的定义与引用
8.5.1 指针变量的定义
8.5.2 指针变量的引用
8.6 指针与数组
8.6.1 指针与一维数组
8.6.2 指针与二维数组
8.6.3 指针与字符串数组
8.7 指针的地址分配
8.8 指针数组
8.9 指向指针的指针
8.10 媒体播放器——建立播放列表
8.10.1 建立一个播放列表
8.10.2 对播放列表排序
8.11 小结
第9章 函数( 教学视频:15分钟)
9.1 函数说明与返回值
9.1.1 函数的类型说明
9.1.2 返回语句
9.2 函数的作用域规则
9.2.1 局部变量
9.2.2 全局变量
9.2.3 动态存储变量
9.2.4 静态存储变量
9.3 函数的调用与参数
9.3.1 形式参数与实际参数
9.3.2 赋值调用与引用调用
9.4 递归
9.5 实现问题
9.5.1 参数和通用函数
9.5.2 效率
9.6 函数库和文件
9.6.1 程序文件的大小
9.6.2 分类组织文件
9.6.3 函数库
9.7 main()函数的参数
9.8 媒体播放器——建立核心控制模块
9.8.1 通过函数传递参数
9.8.2 建立媒体播放器核心控制模块
9.9 小结
第10章 字符及字符串处理( 教学视频:9分钟)
10.1 字符编码
10.1.1 ASCII编码
10.1.2 Unicode编码
10.2 字符处理库
10.3 字符串转换函数
10.4 字符串处理函数
10.5 字符串比较函数
10.6 字符串查找函数
10.7 字符串内存函数
10.8 字符串的其他函数
10.9 媒体播放器——实现播放列表的检索功能
10.9.1 对播放列表中的整个字符串进行排序
10.9.2 在播放列表中查找字符串
10.10 小结
第11章 结构体与共用体( 教学视频:20分钟)
11.1 结构体类型变量的定义和引用
11.1.1 结构体类型变量的定义
11.1.2 结构体类型变量的引用
11.1.3 结构体类型变量的初始化
11.2 结构体数组的定义和引用
11.3 结构体指针的定义和引用
11.3.1 指向结构体类型变量的使用
11.3.2 指向结构体类型数组的指针的使用
11.4 共用体
11.4.1 共用体的定义
11.4.2 共用体变量的引用
11.5 媒体播放器——建立媒体库
11.5.1 设计媒体库中的数据结构
11.5.2 媒体库的基本操作
11.5.3 添加文件到媒体库
11.5.4 在媒体库中查找文件
11.5.5 从媒体库删除选定文件
11.5.6 从媒体库删除所有文件
11.6 小结
第12章 C++语言编程基础( 教学视频:7分钟)
12.1 类和数据抽象
12.1.1 用类实现数据抽象
12.1.2 类作用域和访问类成员
12.1.3 从实现中分离接口
12.1.4 控制访问成员
12.1.5 构造函数和析构函数
12.1.6 const对象和const成员函数
12.1.7 friend对象和friend类
12.1.8 this指针
12.1.9 动态内存分配
12.1.10 static类成员
12.2 C++的特性
12.2.1 运算符重载
12.2.2 继承
12.2.3 虚拟函数和多态性
12.2.4 流输入与输出
12.2.5 模板
12.2.6 异常处理
12.3 小结
第3篇 Linux系统编程
第13章 文件操作( 教学视频:14分钟)
13.1 文件的属性与权限
13.1.1 文件的属性
13.1.2 文件的权限
13.1.3 管理文件的权限
13.2 文件管理
13.2.1 系统调用的原理
13.2.2 打开文件、新建文件和关闭文件操作
13.2.3 文件状态和属性操作
13.2.4 目录操作
13.2.5 删除目录或文件操作
13.2.6 错误处理
13.3 媒体播放器——增强媒体库功能
13.3.1 添加目录到媒体库
13.3.2 搜索本地磁盘中的所有媒体文件
13.4 小结
第14章 文件I/O操作( 教学视频:15分钟)
14.1 非缓冲文件操作
14.1.1 使用read()读取文件
14.1.2 使用write()写入文件
14.1.3 随机读写文件
14.2 缓冲文件操作
14.2.1 打开与关闭文件流
14.2.2 读取与写入文件流
14.2.3 文件流的格式化输入与输出
14.2.4 文件流的定位操作
14.2.5 文件流操作的其他函数
14.2.6 文件流操作的错误处理
14.3 媒体播放器——完善播放列表
14.3.1 读取播放列表文件
14.3.2 将播放列表保存为文件
14.4 小结
第15章 进程控制( 教学视频:12分钟)
15.1 进程的基本概念
15.1.1 进程的状态和状态转换
15.1.2 进程控制
15.1.3 进程调度
15.2 进程的基本操作
15.2.1 fork系统调用
15.2.2 exec系统调用
15.2.3 exit系统调用
15.2.4 wait系统调用
15.2.5 sleep函数调用
15.3 进程的特殊操作
15.3.1 获得进程ID
15.3.2 setuid和setgid系统调用
15.3.3 setpgrp和setpgid系统调用
15.3.4 chdir系统调用
15.3.5 chroot系统调用
15.3.6 nice系统调用
15.4 小结
第16章 进程间通信( 教学视频:17分钟)
16.1 进程间使用管道通信
16.1.1 pipe系统调用
16.1.2 dup系统调用
16.2 进程间使用D-Bus通信
16.2.1 D-Bus的基本概念
16.2.2 D-Bus的用例
16.3 媒体播放器——完善退出和音量控制功能
16.3.1 媒体播放器在桌面环境退出时响应
16.3.2 调整系统音量
16.4 小结
第17章 线程控制( 教学视频:12分钟)
17.1 线程的基本概念
17.2 线程的实现
17.2.1 用户态线程
17.2.2 内核态线程
17.3 POSIX线程库
17.3.1 创建线程
17.3.2 结束线程
17.4 同步
17.4.1 用信号量进行同步
17.4.2 用互斥量进行同步
17.5 取消线程
17.6 多线程的实现
17.7 小结
第4篇 Linux网络编程与数据库开发
第18章 网络编程基础( 教学视频:15分钟)
18.1 计算机网络的组成
18.1.1 网络结构
18.1.2 OSI 参考模型
18.1.3 TCP/IP参考模型
18.2 TCP/IP协议
18.2.1 IP协议与Internet
18.2.2 IP互联网协议地址
18.2.3 TCP协议
18.2.4 UDP协议
18.3 Socket套接字
18.3.1 Socket套接字简介
18.3.2 创建套接字
18.3.3 套接字地址
18.3.4 套接字的名字
18.3.5 创建套接字队列
18.3.6 接受连接
18.3.7 请求连接
18.3.8 关闭连接
18.3.9 套接字通信
18.4 网络通信
18.4.1 查询主机名称
18.4.2 Internet守护进程
18.5 小结
第19章 网络编程函数库( 教学视频:13分钟)
19.1 HTTP与FTP函数库
19.1.1 libcurl函数库简介
19.1.2 libcurl中的主要函数
19.1.3 使用libcurl实现简单的HTTP访问
19.2 SMTP、POP与IMAP函数库
19.2.1 使用libESMTP函数库实现电子邮件的发送
19.2.2 使用libspopc函数库实现POP访问
19.2.3 使用mailutils函数库实现IMAP访问
19.3 即时通信函数库
19.3.1 libpurple函数库简介
19.3.2 即时通信软件的工作机制
19.3.3 使用libpurple函数库接入服务器
19.4 小结
第20章 数据库( 教学视频:5分钟)
20.1 数据的存储与访问
20.1.1 使用数据文件
20.1.2 使用数据库
20.2 Berkeley DB数据包
20.2.1 Berkeley DB数据包简介
20.2.2 Berkeley DB数据包的连接和使用
20.2.3 Berkeley DB数据包的访问
20.2.4 Berkeley DB数据包中的游标
20.3 PostgreSQL数据库服务器介绍
20.3.1 PostgreSQL的基本概念
20.3.2 数据库连接函数
20.3.3 命令执行函数
20.3.4 检索查询结果函数
20.4 小结
第21章 Linux系统中的常用数据库及接口( 教学视频:8分钟)
21.1 SQLite数据库
21.1.1 SQLite简介
21.1.2 连接SQLite数据库
21.1.3 SQLite命令执行函数
21.1.4 SQLite检索查询结果函数
21.2 MySQL数据库
21.2.1 MySQL简介
21.2.2 连接MySQL数据库
21.2.3 查询MySQL数据库
21.2.4 处理MySQL查询结果
21.3 大型数据库与通用数据库接口
21.3.1 连接Oracle数据库
21.3.2 通用数据库接口
21.4 媒体播放器——媒体库的数据库实现
21.4.1 建立和连接数据库
21.4.2 建立媒体库数据表
21.4.3 管理媒体库数据表
21.5 小结
第5篇 Linux界面开发
第22章 界面开发基础( 教学视频:11分钟)
22.1 Linux常用桌面环境
22.1.1 GNOME桌面环境
22.1.2 KDE桌面环境
22.1.3 移动设备与HILDON桌面环境
22.2 GTK+图形环境介绍
22.3 GLib库介绍
22.3.1 基础类型
22.3.2 对核心应用的支持
22.3.3 实用功能
22.3.4 数据类型
22.4 GObject对象介绍
22.4.1 对象系统
22.4.2 GObject系统中的宏定义
22.4.3 GTypeInfo结构
22.4.4 信号机制
22.5 2D图形引擎Cairo介绍
22.6 多媒体库GStreamer介绍
22.6.1 过滤器
22.6.2 衬垫
22.6.3 箱柜
22.6.4 精灵衬垫
22.7 搭建GTK+开发环境
22.8 小结
第23章 界面构件开发( 教学视频:6分钟)
— 没有更多了 —
以下为对购买帮助不大的评价