描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121358555丛书名: 计算机类本科规划教材
编辑推荐
以RedHat Linux平台为例,提供电子课件、源代码、习题解答。
内容简介
本书基于Linux内核,以RedHat Linux平台为例,介绍Linux系统程序设计的基础知识,为准备学习Linux系统程序开发的初学者提供方便快捷的途径。 全书共12章。第1章介绍Linux操作系统的基本使用方法;第2章介绍Linux平台下进行C语言开发需要的各种工具;第3章介绍Linux平台下常用的编程基础知识;第4~6章介绍文件、文件属性、目录文件相关的编程理论和方法;第7、8章介绍进程和线程的编程方法;第9~11章介绍信号、管道、信号量、共享内存、消息队列、套接字6种进程间通信方式;第12章介绍两个贯穿本书大多数知识点的综合案例。 本书可作为高等院校计算机科学与技术、软件工程、物联网工程等相关专业“Linux程序设计”相关课程的教材,同时可供本科高年级学生自学使用,也可以作为相关工程技术人员和计算机爱好者的参考书。
目 录
第1章 Linux基础
1.1 UNIX/Linux简介
1.1.1 UNIX简介
1.1.2 UNIX体系结构
1.1.3 Linux简介
1.1.4 Linux版本说明
1.1.5 Linux特点
1.2 库函数与系统调用
1.3 Linux常用命令
1.3.1 用户和用户组命令
1.3.2 文件和目录命令
1.3.3 进程命令
1.3.4 获取帮助信息
1.4 案例1:通过SSH终端登录Linux 系统
1.4.1 分析与设计
1.4.2 实施
1.4.3 运行
习题
第2章 Linux系统开发环境
2.1 Vi编辑器
2.1.1 Vi编辑器的工作模式
2.1.2 Vi编辑器的基本用法
2.1.3 Vi编辑器的高级用法
2.2 GCC编译器
2.2.1 GCC编译器介绍
2.2.2 GCC编译器基本用法
2.3 Makefile文件的使用
2.3.1 Makefile文件
2.3.2 Makefile文件的命名
2.3.3 Makefile文件的调用
2.3.4 Makefile文件的内容
2.3.5 make命令的特殊用法
2.4 GDB调试器
2.4.1 输出调试
2.4.2 GDB调试器
2.5 库
2.5.1 库相关概念
2.5.2 静态库和共享库
2.6 案例2:简易学生成绩计算
2.6.1 分析与设计
2.6.2 实施
2.6.3 编译与运行
习题
第3章 Linux程序设计初步
3.1 程序及进程的存储结构
3.2 变量的类型修饰符
3.3 命令行参数及获取
3.3.1 命令行参数
3.3.2 getopt获取命令行参数
3.4 环境变量
3.4.1 Shell变量
3.4.2 环境变量的相关命令
3.4.3 环境变量函数
3.5 时间管理
3.6 错误代码
3.7 标准I/O与文件I/O
3.8 案例3:设置环境变量
3.8.1 分析与设计
3.8.2 实施
3.8.3 编译与运行
习题
第4章 文件I/O
4.1 文件系统简介
4.1.1 UNIX/Linux文件系统概述
4.1.2 虚拟文件系统(VFS)
4.1.3 索引节点(inode)
4.1.4 文件的类型
4.1.5 文件的访问权限
4.2 访问文件的内核数据结构
4.3 文件基本I/O操作
4.3.1 打开/创建文件
4.3.2 读文件
4.3.3 写文件
4.3.4 文件定位
4.3.5 关闭文件
4.3.6 文件操作举例
4.4 文件访问的同步
4.5 案例4:文件复制命令的实现
4.5.1 分析与设计
4.5.2 实施
4.5.3 编译与运行
习题
第5章 文件属性
5.1 获取文件属性
5.2 用户/组ID与名字的转换
5.2.1 用户和组
5.2.2 获取文件的用户和组的信息
5.3 硬链接与符号链接
5.3.1 硬链接与符号链接的区别
5.3.2 相关的系统调用
5.4 dup/dup2
5.4.1 输入/输出重定向
5.4.2 系统调用dup/dup2
5.5 文件属性的修改
5.5.1 修改文件属性
5.5.2 改变文件所有者及所属组chown/fchown/lchown
5.5.3 改变文件访问权限chmod/fchmod
5.5.4 改变文件时间utime
5.5.5 改变文件长度truncate/ftruncate
5.6 案例5:显示文件长格式信息
5.6.1 分析与设计
5.6.2 实施
5.6.3 编译与运行
习题
第6章 目录文件管理
6.1 目录基本操作
6.1.1 打开目录
6.1.2 读目录
6.1.3 关闭目录
6.2 目录其他操作
6.2.1 切换当前目录
6.2.2 创建目录
6.2.3 删除目录
6.2.4 目录指针定位
6.3 案例6:显示指定目录下文件列表
6.3.1 分析与设计
6.3.2 实施
6.3.3 编译与运行
习题
第7章 进程控制
7.1 进程基本概念
7.1.1 进程和进程控制块
7.1.2 进程标识
7.1.3 用户标识
7.2 进程控制
7.2.1 创建进程
7.2.2 exec*系列函数
7.2.3 进程终止
7.2.4 等待进程结束
7.2.5 system函数
7.3 什么是Shell
7.3.1 用户登录Shell
7.3.2 Shell执行命令
7.4 案例7:实现简单的Shell
7.4.1 分析与设计
7.4.2 实施
7.4.3 编译与运行
习题
第8章 线程
8.1 线程概念
8.2 线程基本操作
8.3 线程间通信
8.4 案例8:线程实例
8.4.1 分析与设计
8.4.2 实施
8.4.3 编译与运行
习题
第9章 信号与管道
9.1 信号
9.1.1 信号的概念
9.1.2 信号的产生
9.1.3 信号的响应方式
9.1.4 sleep函数和pause系统调用
9.1.5 信号集
9.2 管道
9.2.1 管道基本概念
9.2.2 FIFO
习题
第10章 进程间通信
10.1 System V IPC简介
10.2 System V信号量
10.3 System V共享内存
10.4 System V消息队列
习题
第11章 网络编程
11.1 网络编程基本概念
11.1.1 常用网络相关命令和配置文件
11.1.2 软件体系结构
11.1.3 网络协议及OSI参考模型
11.1.4 IP地址和端口
11.1.5 字节顺序
11.1.6 网络数据传输方式
11.2 套接字编程基础
11.2.1 套接字简介
11.2.2 套接字地址结构
11.2.3 面向连接套接字通信过程
11.2.4 面向无连接套接字通信过程
11.3 套接字编程相关系统调用
11.3.1 系统调用socket
11.3.2 系统调用bind
11.3.3 系统调用listen
11.3.4 系统调用accept
11.3.5 系统调用connect
11.3.6 系统调用send
11.3.7 系统调用sendto
11.3.8 系统调用recv
11.3.9 系统调用recvfrom
11.3.10 系统调用close
11.3.11 系统调用shutdown
11.4 案例9:基于网络的进程间通信
11.4.1 分析与设计
11.4.2 实施
11.4.3 编译与运行
11.5 基于UDP的网络编程
11.6 域名解析
11.6.1 域名解析
11.6.2 IP地址形式转换
11.6.3 IP地址与主机名
习题
第12章 综合案例
12.1 Linux网络传输系统
12.1.1 构思
12.1.2 设计
12.1.3 实施
12.1.4 运行
12.2 简易的文件传输系统
12.2.1 构思
12.2.2 设计
12.2.3 实施
12.2.4 运行
习题
附录A Linux主要的系统调用
附录B ASCII码
参考文献
1.1 UNIX/Linux简介
1.1.1 UNIX简介
1.1.2 UNIX体系结构
1.1.3 Linux简介
1.1.4 Linux版本说明
1.1.5 Linux特点
1.2 库函数与系统调用
1.3 Linux常用命令
1.3.1 用户和用户组命令
1.3.2 文件和目录命令
1.3.3 进程命令
1.3.4 获取帮助信息
1.4 案例1:通过SSH终端登录Linux 系统
1.4.1 分析与设计
1.4.2 实施
1.4.3 运行
习题
第2章 Linux系统开发环境
2.1 Vi编辑器
2.1.1 Vi编辑器的工作模式
2.1.2 Vi编辑器的基本用法
2.1.3 Vi编辑器的高级用法
2.2 GCC编译器
2.2.1 GCC编译器介绍
2.2.2 GCC编译器基本用法
2.3 Makefile文件的使用
2.3.1 Makefile文件
2.3.2 Makefile文件的命名
2.3.3 Makefile文件的调用
2.3.4 Makefile文件的内容
2.3.5 make命令的特殊用法
2.4 GDB调试器
2.4.1 输出调试
2.4.2 GDB调试器
2.5 库
2.5.1 库相关概念
2.5.2 静态库和共享库
2.6 案例2:简易学生成绩计算
2.6.1 分析与设计
2.6.2 实施
2.6.3 编译与运行
习题
第3章 Linux程序设计初步
3.1 程序及进程的存储结构
3.2 变量的类型修饰符
3.3 命令行参数及获取
3.3.1 命令行参数
3.3.2 getopt获取命令行参数
3.4 环境变量
3.4.1 Shell变量
3.4.2 环境变量的相关命令
3.4.3 环境变量函数
3.5 时间管理
3.6 错误代码
3.7 标准I/O与文件I/O
3.8 案例3:设置环境变量
3.8.1 分析与设计
3.8.2 实施
3.8.3 编译与运行
习题
第4章 文件I/O
4.1 文件系统简介
4.1.1 UNIX/Linux文件系统概述
4.1.2 虚拟文件系统(VFS)
4.1.3 索引节点(inode)
4.1.4 文件的类型
4.1.5 文件的访问权限
4.2 访问文件的内核数据结构
4.3 文件基本I/O操作
4.3.1 打开/创建文件
4.3.2 读文件
4.3.3 写文件
4.3.4 文件定位
4.3.5 关闭文件
4.3.6 文件操作举例
4.4 文件访问的同步
4.5 案例4:文件复制命令的实现
4.5.1 分析与设计
4.5.2 实施
4.5.3 编译与运行
习题
第5章 文件属性
5.1 获取文件属性
5.2 用户/组ID与名字的转换
5.2.1 用户和组
5.2.2 获取文件的用户和组的信息
5.3 硬链接与符号链接
5.3.1 硬链接与符号链接的区别
5.3.2 相关的系统调用
5.4 dup/dup2
5.4.1 输入/输出重定向
5.4.2 系统调用dup/dup2
5.5 文件属性的修改
5.5.1 修改文件属性
5.5.2 改变文件所有者及所属组chown/fchown/lchown
5.5.3 改变文件访问权限chmod/fchmod
5.5.4 改变文件时间utime
5.5.5 改变文件长度truncate/ftruncate
5.6 案例5:显示文件长格式信息
5.6.1 分析与设计
5.6.2 实施
5.6.3 编译与运行
习题
第6章 目录文件管理
6.1 目录基本操作
6.1.1 打开目录
6.1.2 读目录
6.1.3 关闭目录
6.2 目录其他操作
6.2.1 切换当前目录
6.2.2 创建目录
6.2.3 删除目录
6.2.4 目录指针定位
6.3 案例6:显示指定目录下文件列表
6.3.1 分析与设计
6.3.2 实施
6.3.3 编译与运行
习题
第7章 进程控制
7.1 进程基本概念
7.1.1 进程和进程控制块
7.1.2 进程标识
7.1.3 用户标识
7.2 进程控制
7.2.1 创建进程
7.2.2 exec*系列函数
7.2.3 进程终止
7.2.4 等待进程结束
7.2.5 system函数
7.3 什么是Shell
7.3.1 用户登录Shell
7.3.2 Shell执行命令
7.4 案例7:实现简单的Shell
7.4.1 分析与设计
7.4.2 实施
7.4.3 编译与运行
习题
第8章 线程
8.1 线程概念
8.2 线程基本操作
8.3 线程间通信
8.4 案例8:线程实例
8.4.1 分析与设计
8.4.2 实施
8.4.3 编译与运行
习题
第9章 信号与管道
9.1 信号
9.1.1 信号的概念
9.1.2 信号的产生
9.1.3 信号的响应方式
9.1.4 sleep函数和pause系统调用
9.1.5 信号集
9.2 管道
9.2.1 管道基本概念
9.2.2 FIFO
习题
第10章 进程间通信
10.1 System V IPC简介
10.2 System V信号量
10.3 System V共享内存
10.4 System V消息队列
习题
第11章 网络编程
11.1 网络编程基本概念
11.1.1 常用网络相关命令和配置文件
11.1.2 软件体系结构
11.1.3 网络协议及OSI参考模型
11.1.4 IP地址和端口
11.1.5 字节顺序
11.1.6 网络数据传输方式
11.2 套接字编程基础
11.2.1 套接字简介
11.2.2 套接字地址结构
11.2.3 面向连接套接字通信过程
11.2.4 面向无连接套接字通信过程
11.3 套接字编程相关系统调用
11.3.1 系统调用socket
11.3.2 系统调用bind
11.3.3 系统调用listen
11.3.4 系统调用accept
11.3.5 系统调用connect
11.3.6 系统调用send
11.3.7 系统调用sendto
11.3.8 系统调用recv
11.3.9 系统调用recvfrom
11.3.10 系统调用close
11.3.11 系统调用shutdown
11.4 案例9:基于网络的进程间通信
11.4.1 分析与设计
11.4.2 实施
11.4.3 编译与运行
11.5 基于UDP的网络编程
11.6 域名解析
11.6.1 域名解析
11.6.2 IP地址形式转换
11.6.3 IP地址与主机名
习题
第12章 综合案例
12.1 Linux网络传输系统
12.1.1 构思
12.1.2 设计
12.1.3 实施
12.1.4 运行
12.2 简易的文件传输系统
12.2.1 构思
12.2.2 设计
12.2.3 实施
12.2.4 运行
习题
附录A Linux主要的系统调用
附录B ASCII码
参考文献
前 言
Linux内核初是由芬兰人Linus Benedict Torvalds在赫尔辛基大学上学时编写的。1991年,Linus Benedict Torvalds次发布了Linux内核,随后采用GPL协议,自此以后越来越多的程序员参与了Linux内核代码的编写和修改工作。目前Linux系统在服务器和超级计算机领域占据主导地位,在手机系统领域(Android)也是占据了近三分之二的市场,另外在车载终端、智能电视等智能设备方面也占据了很大的市场份额。因此,对于Linux系统的使用和编程,是计算机爱好者和嵌入式领域工程技术人员非常重要的一项技能。
本书主要介绍基于Linux平台的文件、进程、进程间通信相关的编程理论和方法,共12章。第1章介绍Linux操作系统的基本使用方法;第2章介绍Linux平台下进行C语言开发需要的各种工具;第3章介绍Linux平台下常用的编程基础知识;第4~6章介绍文件、文件属性、目录文件相关的编程理论和方法;第7、8章介绍进程和线程的编程方法;第9~11章介绍信号、管道、信号量、共享内存、消息队列、Socket 6种进程间通信方式;第12章介绍两个贯穿本书大多数知识点的综合案例。
本书的内容包括知识讲解和技能训练,并以案例为核心,将知识与技能有机地结合在一起。本书以典型的Linux系统综合案例为主线贯穿全书展开各部分的知识讲解。在每一章中除介绍相关知识外,还辅以若干个小案例的训练,从而将知识转化为解决问题的技能。
本书各章节关系图如下:
*粗线走向为综合案例贯穿本书的各个章节顺序。
*细线走向为本书中相对独立的三大知识体系:文件(第4、5、6章),进程(第7、8章),进程间通信(第9、10、11章);第1、2、3章是这三大知识体系的支撑。
本书主要针对具有一定的C语言编程基础的读者,可作为高等院校计算机科学与技术、软件工程、物联网工程等相关专业“Linux程序设计”相关课程的教材,同时可供本科高年级学生自学使用,也可以作为相关工程技术人员和计算机爱好者的参考书。
本书配有电子课件、源程序代码、习题解答等教学资源,读者可以登录华信教育资源网(www.hxedu.com.cn)注册后免费下载。
参与编写本书的都是具有丰富一线教学经验的老师,在操作系统、Linux管理与应用、C/C 编程开发、嵌入式软件开发、移动应用软件开发等领域具有多年的教学和实践经验。本书由王凯担任主编,杨光、窦乔、杨俊伟、余新桥、孙斌担任副主编,其中余新桥负责编写第1章,王凯负责编写第2、3、11章,孙斌负责编写第4、5、6章,杨俊伟负责编写第8章,杨光负责编写第7、9、10章,窦乔负责编写第12章。全书后由王凯负责统稿和定稿。此外,李瑛达、陈艳秋、张福艳、李宁宁、高志君、郑纯军、贾宁等为本书做了大量的工作,在此表示感谢。
由于时间和作者的水平有限,书中难免有错误和不妥之处,请各位读者,特别是同行专家批评指正(E-mail:[email protected])。
本书主要介绍基于Linux平台的文件、进程、进程间通信相关的编程理论和方法,共12章。第1章介绍Linux操作系统的基本使用方法;第2章介绍Linux平台下进行C语言开发需要的各种工具;第3章介绍Linux平台下常用的编程基础知识;第4~6章介绍文件、文件属性、目录文件相关的编程理论和方法;第7、8章介绍进程和线程的编程方法;第9~11章介绍信号、管道、信号量、共享内存、消息队列、Socket 6种进程间通信方式;第12章介绍两个贯穿本书大多数知识点的综合案例。
本书的内容包括知识讲解和技能训练,并以案例为核心,将知识与技能有机地结合在一起。本书以典型的Linux系统综合案例为主线贯穿全书展开各部分的知识讲解。在每一章中除介绍相关知识外,还辅以若干个小案例的训练,从而将知识转化为解决问题的技能。
本书各章节关系图如下:
*粗线走向为综合案例贯穿本书的各个章节顺序。
*细线走向为本书中相对独立的三大知识体系:文件(第4、5、6章),进程(第7、8章),进程间通信(第9、10、11章);第1、2、3章是这三大知识体系的支撑。
本书主要针对具有一定的C语言编程基础的读者,可作为高等院校计算机科学与技术、软件工程、物联网工程等相关专业“Linux程序设计”相关课程的教材,同时可供本科高年级学生自学使用,也可以作为相关工程技术人员和计算机爱好者的参考书。
本书配有电子课件、源程序代码、习题解答等教学资源,读者可以登录华信教育资源网(www.hxedu.com.cn)注册后免费下载。
参与编写本书的都是具有丰富一线教学经验的老师,在操作系统、Linux管理与应用、C/C 编程开发、嵌入式软件开发、移动应用软件开发等领域具有多年的教学和实践经验。本书由王凯担任主编,杨光、窦乔、杨俊伟、余新桥、孙斌担任副主编,其中余新桥负责编写第1章,王凯负责编写第2、3、11章,孙斌负责编写第4、5、6章,杨俊伟负责编写第8章,杨光负责编写第7、9、10章,窦乔负责编写第12章。全书后由王凯负责统稿和定稿。此外,李瑛达、陈艳秋、张福艳、李宁宁、高志君、郑纯军、贾宁等为本书做了大量的工作,在此表示感谢。
由于时间和作者的水平有限,书中难免有错误和不妥之处,请各位读者,特别是同行专家批评指正(E-mail:[email protected])。
评论
还没有评论。