《精通Unix下C语言编程与项目实践》目录

简介:
书籍目录

 
说明:红色部分为即将试读章节,可以直接点击说明已经开放试读,未能点击则暂时未加入。
 

1部分  起步篇
1  UNIX初步 
1.1  UNIX
的发展历程 
1.1.1  UNIX
的诞生 
1.1.2  UNIX
的发展与分支 
1.2  UNIX
的基本操作 
1.2.1  shell
简介 
1.2.2  
系统登录 
1.2.3  
用户管理 
1.2.4  
文件管理 
1.2.5  
目录管理 
1.2.6  I/O
重定向 
1.2.7  
管道 
1.2.8  
进程管理 
1.3  
文本编辑器vi 
1.3.1  vi
的模式 
1.3.2  vi
的常用命令 
1.4  
小结


2  编程套件 
2.1  
开发套件的选择 
2.1.1  
编辑器UltraEdit 
2.1.2  
网络终端SecureCRT 
2.1.3  
网络终端SecureNetTerm 
2.2  
编译器cc的使用 
2.2.1  cc
的初体验 
2.2.2  cc
选项 
2.3  
使用make工具 
2.3.1  make
初体验 
2.3.2  makefile
的结构 
2.4  
使用gdb调试器 
2.4.1  gdb
的编译与启动 
2.4.2  gdb
的程序控制 
2.5  
小结


3  库的使用 
3.1  
操作库工具 
3.1.1  
库分类 
3.1.2  
静态库的操作工具 
3.2  
静态编程库 
3.2.1  
静态库的生成 
3.2.2  
静态库的应用模型 
3.3  
动态库的生成 
3.4  
动态库的隐式调用 
3.5  
动态库的显式调用 
3.5.1  
函数族 
3.5.2  
应用模型 
3.6  
小结


2部分  文件子系统
4  文件系统结构 
4.1  
文件系统的结构 
4.2  
磁盘文件的存储 
4.3  
文件属性 
4.3.1  
文件属性函数族 
4.3.2  
文件类型 
4.3.3  
文件访问权限 
4.3.4  
文件其他属性 
4.4  
文件系统属性 
4.5  
小结


5  标准文件编程库 
5.1  
文件的创建、打开、关闭与删除 
5.2  
文件的无格式读写 
5.2.1  
字符读写 
5.2.2  
行读写 
5.2.3  
块读写 
5.3  
文件的格式化读写 
5.3.1  
数据格式转换 
5.3.2  
文件的格式化输出函数族 
5.3.3  
文件的格式化输入函数族 
5.4  
函数的变长参数 
5.4.1. 
变长参数的使用
 
5.4.2  
变长参数的传递
 
5.5  
文件读写位置的定位 
5.6  
文件的状态 
5.6.1  
文件的错误与结束状态 
5.6.2  
文件的错误信息 
5.7  
文件的缓冲 
5.7.1  
缓冲模式 
5.7.2  
缓冲函数 
5.8  
项目:通用函数库之调试功能库封装 
5.8.1  
通用函数库 
5.8.2  
调试库内容 
5.8.3  
调试库设计 
5.8.4  
调试库编译 
5.8.5  
调试库应用实例 
5.9  
小结


6  低级文件编程库 
6.1  
文件描述符 
6.2  
文件的打开与创建 
6.3  
文件的关闭与删除 
6.4  
文件读 
6.5  
文件写 
6.6  
文件的定位 
6.7  
文件缓冲

6.8   复制文件描述符 
6.9  
文件控制 
6.9.1  
函数fcntl 
6.9.2  
文件锁

6.9.3   文件锁操作 
6.10  
项目:通用函数库之读写功能库封装 
6.10.1  
阻塞读写函数库 
6.10.2  
阻塞读写函数库应用实例 
6.11  
小结


7  目录文件编程库 
7.1  
工作目录 
7.2  
目录的创建与删除 
7.3  
目录的读取 
7.4  
目录的定位 
7.5  
小结


8  设备文件 
8.1   设备文件概述 
8.2  
设备文件操作 
8.3  
终端设备 
8.3.1  
终端设备简介 
8.3.2  
终端设备操作 
8.4  
外部设备操作 
8.4.1  
操作连接串口的外设 
8.4.2  
操作连接终端的外设 
8.5  
小结


3部分  并发程序设计
9  进程控制 
9.1  
进程基本环境 
9.1.1  
进程概念 
9.1.2  
进程的标识 
9.1.3  
进程命令行 
9.1.4  
环境变量 
9.2  
进程的生命周期 
9.2.1  
进程的创建 
9.2.2  
新程序的执行 
9.2.3  
进程的休眠 
9.2.4  
进程的终止 
9.2.5  
进程的同步
9.3  
僵死进程 
9.4  
守护进程 
9.4.1  
守护进程编程模型 
9.4.2  
项目:通用函数库之守护进程生成器 
9.5  
小结


10  时钟与信号 
10.1  
时钟 
10.1.1  
系统时间 
10.1.2  
本地时间 
10.1.3  
项目:通用函数编程库之时间函数封装 
10.2  
信号的概念 
10.2.1  
信号的产生 
10.2.2  
信号的处理 
10.3  
信号全家福 
10.3.1  
软硬件异常类信号 
10.3.2  
终止进程类信号 
10.3.3  
进程挂起类信号 
10.3.4  
定时器类信号 
10.3.5  
其他信号 
10.4  
信号操作 
10.4.1  
信号的忽略与捕获 
10.4.2  
信号的显式发送 
10.5  
定时器设置 
10.5.1  
普通定时器设置
10.5.2  
精通定时器设置
10.6  
全局跳转 
10.7  
实践经验:单进程I/O超时处理 
10.7.1  
终端I/O超时方式 
10.7.2  
信号与跳转I/O超时方式 
10.7.3  
多路复用I/O超时方式 
10.8  
项目:通用函数库之读写功能库封装 
10.8.1  
定时读写函数库 
10.8.2  
定时读写函数库应用实例 
10.9  
小结


4部分  进程通信篇
11  管道 
11.1  
管道的概念 
11.2  
无名管道 
11.2.1  
无名管道的建立 
11.2.2  
单向管道流模型 
11.2.3  
双向管道流模型 
11.2.4  
连接标准I/O的管道模型 
11.2.5  popen
模型 
11.3  
有名管道FIFO 
11.3.1  
有名管道的建立 
11.3.2  
有名管道的应用 
11.3.3  
管道的模型 
11.4  
小结


12  消息队列 
12.1  IPC 系统简介 
12.2  
消息队列简介 
12.2.1  
消息队列结构 
12.2.2  
消息结构 
12.3  
消息队列的创建 
12.4  
消息队列的发送与接收 
12.4.1  
消息队列发送函数
12.4.2  
消息队列发送模型 
12.4.3  
消息队列接收函数 
12.4.4  
消息队列接收模型 
12.5  
消息队列的控制 
12.6  
消息队列的常见应用模型 
12.7  
项目:通用函数库之消息队列功能库封装 
12.8  
小结


13  信号量 
13.1  
信号量介绍 
13.2  
信号量的创建 
13.3  
信号量控制 
13.3.1  
信号量控制函数 
13.3.2  
信号量控制的应用模板 
13.4  
信号量的操作 
13.4.1  
信号量操作函数 
13.4.2  
信号量操作实例 
13.5  
项目:通用函数库之信号量函数库封装 
13.6 
小结


14  共享内存 
14.1  
共享内存介绍 
14.2  
共享内存模型 
14.2.1  
共享内存的系统调用 
14.2.2  
共享内存的应用 
14.3  
共享内存的控制 
14.4  
实践经验:IPC对象应用 
14.4.1  
共享内存的常见应用模型 
14.4.2  
通用函数编程库:模型“1-n-n”实现 
14.5  
小结


5部分  网络通信篇
15  基于TCP的通信程序设计 
15.1  
套接字(SOCKET)的概念 
15.1.1  
套接字的类型 
15.1.2  
套接字描述符 
15.2  TCP
协议的基础编程模型 
15.2.1  Socket
的创建系统调用socket 
15.2.2  Socket
的命名系统调用bind 
15.2.3  Socket
的侦听系统调用listen 
15.2.4  Socket
的连接处理系统调用accept 
15.2.5  Socket
的关闭系统调用shutdown 
15.2.6  Socket
的连接申请系统调用connect 
15.2.7  TCP
数据的发送系统调用send 
15.2.8  TCP
数据的接收系统调用recv 
15.2.9  
实例:服务器端程序 
15.3  Socket
的协议地址属性 
15.3.1  Socket
的域名地址 
15.3.2  Socket
的端口 
15.3.3  Socket
的协议地址 
15.3.4  
通用函数编程库之TCP通信库 
15.4  
套接字选项 
15.5  
项目:网页投票器—HTTP客户端 
15.5.1  URL
Uniform Resource Locator,统一资源定位符)
 
15.5.2  HTTP
协议报文格式
 
15.5.3  
网页投票器
 
15.5.4  
网页刷新器
 
15.6  TCP
连接模型 
15.6.1  
同步短连接模型 
15.6.2  
异步长连接模型 
15.6.3  TCP
模型应用实例分析银行ATM系统 
15.7  
小结


16  基于UDP的通信程序设计 
16.1  UDP
数据的收发 
16.2  UDP
协议的基础编程模型 
16.3  UDP
通信应用模型 
16.3.1  
通信模型 
16.3.2  
实例:系统监控项目通信模块分析 
16.3.3  
实例:系统监控项目通信模块设计 
16.4  
小结


17  并发Socket程序设计 
17.1   非阻塞并发模型 
17.1.1  
非阻塞套接字系统调用 
17.1.2  
非阻塞套接字程序设计流程 
17.2  
信号驱动并发模型 
17.2.1  
信号驱动设计流程 
17.2.2  
信号驱动应用范围 
17.3  
超时并发模型 
17.3.1  
通过套接字选项设置超时 
17.3.2  
通过信号SIGALRM设置超时 
17.3.3  
通过信号SIGALRM与跳转设置超时 
17.4  
多路复用并发模型 
17.4.1  
套接字多路复用并发程序设计流程 
17.4.2  
项目:通信转发器 
17.5  
多进程并发模型 
17.5.1  
不固定进程数的并发模型 
17.5.2  
固定进程数的并发模型 
17.5.3  
两种并发模型的对比与选择 
17.5.4  
项目:HTTP代理服务器 
17.6  inetd
守护进程 
17.6.1  inetd
程序初步 
17.6.2  inetd
守护程序实例 
17.6.3  inetd
守护进程的设计 
17.7  
小结


6部分  流行软件完整案例
18  数据传输技术之字符串报文 
18.1  
字符串报文简介 
18.1.1  
字符串报文类型
 
18.1.2  
字符串报文传送方式
 
18.2  
字符串报文组包 
18.3  
字符串报文解析 
18.4  
字符串解析实例 
18.5  
配置文件读取 
18.5.1  
配置数据的传递方式 
18.5.2  
配置数据的格式 
18.5.3  
通用函数编程库之读取配置文件函数库(4 
18.6  
小结


19  分布式应用技术之远程调用模型 
19.1  
系统分析 
19.2  
系统流程 
19.3  
系统设计 
19.3.1  
通信报文设计 
19.3.2  
远程调用申请报文 
19.3.3  
服务器端主函数 
19.3.4  
子服务函数 
19.3.5  
编译与运行 
19.4  
系统升级 
19.4.1  
用户控制升级 
19.4.2  
服务控制升级 
19.5  
小结


20  系统监控技术之主机模块 
20.1  
系统模块划分 
20.2  
定时器模拟 
20.2.1  
模拟定时器结构 
20.2.2  
模拟定时器管理 
20.2.3  
模拟定时器算法 
20.2.4  
基本定时器 
20.2.5  
模拟定时器实例 
20.3  
监控代码 
20.3.1  
监控代码分析 
20.3.2  
监控代码调用方式 
20.3.3  
主机监控信息分析 
20.3.4  
监控代码实例 
20.4  
主机进程调度 
20.4.1  
串行动态库监控实例 
20.4.2  
并行监控实例 
20.4.3  
改进的并行监控实例可控的调度 
20.5  
小结


21  系统监控技术之信息转发模块 
21.1  
系统分析与设计 
21.2  
用户模块 
21.3  
转发程序 
21.4  
签到程序 
21.5  
小结


附录A  配套代码的使用 
A.1  
安装源文件 
A.2  
源程序编译


附录B  通用函数编程库  
B.1  
目录结构 
B.2  
编译方法 
B.3  
通用函数编程库头文件


附录C  由浅入深经典项目10 
C.1  
文件管理器 
C.2  
文件管理器
 
C.3  
进程管理器
 
C.4  
模拟数据库存储项目
 
C.5  
俄罗斯方块程序设计
 
C.6  IPC
对象操作程序设计
 
C.7  
操作终端外设项目
 
C.8  
聊天项目后台
 
C.9  SOCK5
代理服务器项目
 
C.10  
网络游戏后台项目


 本文转自 zhuyunxiang 51CTO博客,原文链接:http://blog.51cto.com/zhuyunxiang/128566,如需转载请自行联系原作者



相关文章
|
1月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
160 12
|
1月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
|
2月前
|
存储 算法 Linux
C语言 多进程编程(一)进程创建
本文详细介绍了Linux系统中的进程管理。首先,文章解释了进程的概念及其特点,强调了进程作为操作系统中独立可调度实体的重要性。文章还深入讲解了Linux下的进程管理,包括如何获取进程ID、进程地址空间、虚拟地址与物理地址的区别,以及进程状态管理和优先级设置等内容。此外,还介绍了常用进程管理命令如`ps`、`top`、`pstree`和`kill`的使用方法。最后,文章讨论了进程的创建、退出和等待机制,并展示了如何通过`fork()`、`exec`家族函数以及`wait()`和`waitpid()`函数来管理和控制进程。此外,还介绍了守护进程的创建方法。
C语言 多进程编程(一)进程创建
|
2月前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
2月前
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。
|
2月前
|
消息中间件 Unix Linux
C语言 多进程编程(五)消息队列
本文介绍了Linux系统中多进程通信之消息队列的使用方法。首先通过`ftok()`函数生成消息队列的唯一ID,然后使用`msgget()`创建消息队列,并通过`msgctl()`进行操作,如删除队列。接着,通过`msgsnd()`函数发送消息到消息队列,使用`msgrcv()`函数从队列中接收消息。文章提供了详细的函数原型、参数说明及示例代码,帮助读者理解和应用消息队列进行进程间通信。
|
2月前
|
缓存 Linux C语言
C语言 多进程编程(六)共享内存
本文介绍了Linux系统下的多进程通信机制——共享内存的使用方法。首先详细讲解了如何通过`shmget()`函数创建共享内存,并提供了示例代码。接着介绍了如何利用`shmctl()`函数删除共享内存。随后,文章解释了共享内存映射的概念及其实现方法,包括使用`shmat()`函数进行映射以及使用`shmdt()`函数解除映射,并给出了相应的示例代码。最后,展示了如何在共享内存中读写数据的具体操作流程。
|
2月前
|
消息中间件 Unix Linux
C语言 多进程编程(二)管道
本文详细介绍了Linux下的进程间通信(IPC),重点讨论了管道通信机制。首先,文章概述了进程间通信的基本概念及重要性,并列举了几种常见的IPC方式。接着深入探讨了管道通信,包括无名管道(匿名管道)和有名管道(命名管道)。无名管道主要用于父子进程间的单向通信,有名管道则可用于任意进程间的通信。文中提供了丰富的示例代码,展示了如何使用`pipe()`和`mkfifo()`函数创建管道,并通过实例演示了如何利用管道进行进程间的消息传递。此外,还分析了管道的特点、优缺点以及如何通过`errno`判断管道是否存在,帮助读者更好地理解和应用管道通信技术。
|
2月前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。
|
2月前
|
Linux C语言
C语言 多进程编程(七)信号量
本文档详细介绍了进程间通信中的信号量机制。首先解释了资源竞争、临界资源和临界区的概念,并重点阐述了信号量如何解决这些问题。信号量作为一种协调共享资源访问的机制,包括互斥和同步两方面。文档还详细描述了无名信号量的初始化、等待、释放及销毁等操作,并提供了相应的 C 语言示例代码。此外,还介绍了如何创建信号量集合、初始化信号量以及信号量的操作方法。最后,通过实际示例展示了信号量在进程互斥和同步中的应用,包括如何使用信号量避免资源竞争,并实现了父子进程间的同步输出。附带的 `sem.h` 和 `sem.c` 文件提供了信号量操作的具体实现。