Linux环境C程序设计(第2版)

内容简介

[

  《Linux环境C程序设计(第2版)》是获得大量读者好评的“Linux典藏大全”中的《Linux环境C程序设计》的第2版。  《Linux环境C程序设计(第2版)》提供了大量实例,供读者实战演练。配书光盘中提供了《Linux环境C程序设计(第2版)》的配套教学视频与源程序,以帮助读者更好地学习。  《Linux环境C程序设计(第2版)》共分6篇。第1篇介绍了Linux系统的安装及Linux C开发环境的搭建等;第2篇简单介绍了C语言和程序设计知识、流程图的概念、数据类型、运算符和表达式,程序控制结构、数组与指针、函数、结构体与共用体及C++语言的面向对象程序设计思想和一些新的特性;第3篇介绍了文件操作及文件I/O操作、进程控制、进程间通信及线程控制等;第4篇介绍了数据库、Linux系统常用数据库及接口、网络编程基础及网络编程函数库;第5篇介绍了界面开发基础、界面构件开发、界面布局、信号与事件处理、Glade设计程序界面等内容;第6篇详细介绍了一个媒体播放器项目案例的实现过程,以提高读者实战水平。  《Linux环境C程序设计(第2版)》涉及面广,从基本操作到高级技术和核心原理,再到项目开发,几乎涉及Linux C开发的所有重要知识。  《Linux环境C程序设计(第2版)》适合所有想全面学习Linux C开发技术的人员阅读,也适合各种使用Linux C进行开发的工程技术人员使用。  对于经常使用Linux C做开发的人员,《Linux环境C程序设计(第2版)》更是一本不可多得的案头**参考书。

]

作者简介

[

  徐诚,毕业于华中科技大学计算机通信工程专业。擅长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 以图形方式安装Linux1.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 进程和PID3.3 ANSI C标准3.3.1 函数原型3.3.2 类属指针3.3.3 原始系统数据类型3.4 编译hello world3.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 安装与配置Eclipse4.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 构成符cast6.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 获得进程ID15.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协议与Internet18.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分钟)23.1 常用界面构件23.1.1 按钮构件23.1.2 调整对象23.1.3 范围构件23.1.4 标签构件23.1.5 箭头构件23.1.6 工具提示对象23.1.7 进度条23.1.8 对话框23.1.9 标尺23.1.10 状态栏23.1.11 文本输入构件23.1.12 微调按钮23.1.13 组合输入框23.1.14 日历23.1.15 颜色选择23.1.16 文件选择23.2 复合构件23.2.1 快捷标签23.2.2 绘图区23.2.3 字体选择对话框23.2.4 消息对话框23.2.5 图像构件23.2.6 文本视区23.3 菜单构件23.3.1 菜单栏23.3.2 菜单构件23.3.3 菜单项23.3.4 图形菜单项23.3.5 复选菜单项23.3.6 单选菜单项23.3.7 分隔菜单项23.4 RC文件23.4.1 使用RC文件23.4.2 RC文件格式23.5 小结第24章 界面布局( 教学视频:8分钟)24.1 界面布局的基本概念24.1.1 界面的宽度与高度24.1.2 窗体的基本组成24.1.3 布局约定24.2 组装盒构件24.2.1 组装盒的原理24.2.2 组装盒示范程序24.2.3 表组装的原理24.2.4 表组装示例24.3 容器24.3.1 事件盒24.3.2 对齐构件24.3.3 固定容器24.3.4 布局容器24.3.5 框架构件24.3.6 比例框架24.3.7 分栏窗体构件24.3.8 视角构件24.3.9 滚动条窗体24.3.10 按钮盒24.3.11 工具栏24.3.12 笔记本24.4 媒体播放器——实现界面24.4.1 使用原型法设计媒体播放器界面24.4.2 编写媒体播放器界面代码24.5 小结第25章 信号与事件处理( 教学视频:3分钟)25.1 信号函数与回调函数25.1.1 信号函数25.1.2 回调函数25.2 常用GTK+信号与事件25.2.1 GtkObject类信号25.2.2 GtkWidget界面构件信号25.2.3 GtkWindow窗体构件信号25.2.4 GtkContainer容器构件信号25.2.5 GtkCalendar日历构件信号25.2.6 GtkTextView文本视区构件信号25.3 小结第26章 Glade设计程序界面( 教学视频:7分钟)26.1 Glade简介26.2 构造图形界面26.2.1 添加窗体26.2.2 添加容器26.2.3 添加构件26.2.4 设置构件属性26.2.5 添加事件和回调26.3 C语言代码联编26.3.1 GTK+库使用Glade项目文件26.3.2 使用GTK+多语言支持26.4 小结第6篇 Linux C编程项目实战第27章 编程项目实战——媒体播放器( 教学视频:7分钟)27.1 软件工程实战27.1.1 项目需求分析27.1.2 软件需求说明27.1.3 项目视图的解决方案27.2 软件设计27.2.1 需求分析27.2.2 制订开发计划27.2.3 分工协作27.3 版本控制27.3.1 CVS服务器配置27.3.2 CVS服务器管理27.4 在Eclipse中使用CVS客户端27.4.1 从CVS服务器签出模块并创建项目27.4.2 签入文件27.4.3 使用Eclipse项目创建CVS模块27.4.4 比较文件27.4.5 管理CVS服务器27.4.6 断开项目与CVS服务器之间的关联27.5 音量控制对话框27.5.1 创建对话框27.5.2 添加垂直比例尺27.5.3 测试27.6 播放列表对话框27.6.1 创建对话框27.6.2 创建工具条和工具条按钮27.6.3 创建树视图27.6.4 创建对话框按钮27.6.5 测试27.7 媒体库对话框27.7.1 创建对话框27.7.2 创建工具条和工具条按钮27.7.3 创建分类部件和媒体信息显示部件27.7.4 创建搜索部件27.7.5 创建对话框按钮27.7.6 测试27.8 播放控制模块实现27.8.1 播放控制模块程序结构27.8.2 MP3播放功能的实现27.8.3 播放中的回调处理27.9 系统集成27.10 主程序文件的实现27.10.1 头文件和主函数入口27.10.2 媒体库模块初始化27.10.3 图形界面初始化27.10.4 退出前清理27.10.5 编译和运行27.11 媒体库功能的集成27.11.1 初始化27.11.2 显示媒体库对话框27.11.3 添加文件27.11.4 添加目录27.11.5 删除文件信息27.11.6 删除所有文件信息27.11.7 搜索本地文件27.11.8 传递到播放列表27.11.9 查找27.12 播放列表功能的集成27.12.1 初始化27.12.2 显示播放列表对话框27.12.3 添加文件27.12.4 添加目录27.12.5 打开文件27.12.6 保存文件27.12.7 删除文件27.12.8 删除全部27.12.9 排序27.13 播放控制模块的集成27.13.1 播放模式设置27.13.2 开始播放27.13.3 暂停播放27.13.4 停止播放27.13.5 播放上一首27.13.6 播放下一首27.14 小结

封面

Linux环境C程序设计(第2版)

书名:Linux环境C程序设计(第2版)

作者:徐诚

页数:603

定价:¥89.8

出版社:清华大学出版社

出版日期:2018-04-05

ISBN:9787302347927

PDF电子书大小:115MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注