《Linux下C语言应用编程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:杨铸编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2012
  • ISBN:9787512409057
  • 页数:263 页
图书介绍:本书深入浅出地讲解了Linux下C应用程序开发所需的基本工具、知识和技巧,主要包括:开发工具的使用和技巧、文件I/O编程、多进程编程、进程间通信、多线程编程、网络编程等内容。可以让读者轻松、快速入门Linux下非图形界面应用编程。

第1章Linux下C语言编程环境 1

1.1 Linux操作系统及相关开发工具的安装与使用 1

1.1.1虚拟机软件vmware的安装 1

1.1.2 Linux操作系统的安装 12

1.2基本Shell命令的使用 25

1.2.1常用命令 25

1.2.2帮助命令 29

1.2.3搜索命令 30

1.2.4重定向与管道 32

1.2.5文件类型与权限 32

1.3编辑器vim的使用 34

1.4编译器gcc的使用 36

1.4.1 gcc简介 36

1.4.2使用gcc 38

1.4.3 gcc常用选项 40

1.5调试器gdb的使用 41

1.5.1 gdb概述 41

1.5.2使用gdb 45

1.6 make与Makefile文件 46

1.6.1 Makefile简介 46

1.6.2 Makefile基本规则 46

1.6.3使用带宏的Makefile 48

1.6.4 Makefile隐含规则 50

第2章 文件I/O编程 51

2.1文件I/O介绍 51

2.2文件描述符 51

2.3基本API 52

2.3.1 open 52

2.3.2 read 53

2.3.3 write 54

2.3.4 close 55

2.3.5 lseek 55

2.3.6基本API综合使用 57

2.3.7 fcntl 58

2.3.8 ioctl 60

2.3.9 select 61

2.3.10 poll 64

2.4 stat的使用 67

2.4.1 stat的基本使用 67

2.4.2文件类型的判定 69

2.4.3权限设定的判定 71

2.4.4获取主、次设备号 72

2.4.5获取时间及时间格式的转换 72

2.5目录操作 73

2.5.1打开目录 73

2.5.2读取目录 74

2.5.3关闭目录 74

2.5.4使用范例 74

2.5.5回绕目录rewinddir 75

2.6文件I/O编程综合案例分析——myls.c 75

2.6.1用于命令选项的宏定义 76

2.6.2子函数功能 76

2.6.3 main函数分析 77

2.6.4子函数show_link_content的实现 77

2.6.5子函数show_file的实现 78

2.6.6子函数show_dir的实现 79

2.6.7子函数my_get_opt的实现 80

2.6.8子函数get_file_list的实现 80

第3章 多进程编程 81

3.1进程基础知识 81

3.1.1进程概念 81

3.1.2进程的状态及其转换 82

3.1.3进程标识 83

3.2精解Linux下C进程内存布局 83

3.2.1 C进程内存布局说明 83

3.2.2 C进程内存布局验证 84

3.2.3环境变量的获取与设置 85

3.3进程控制天字第1号系统调用——fork 87

3.3.1 fork的机制与特性 87

3.3.2 fork使用实例分析 88

3.4揭秘文件描述符的本质 89

3.4.1文件描述符的本质是数组元素的下标 89

3.4.2 fork对文件描述符的影响 91

3.4.3标准输入、输出文件描述符与dup2 92

3.5父子进程同步的功臣——wait 94

3.5.1 wait的作用 94

3.5.2调用wait的实例 94

3.5.3 waitpid 97

3.6进程控制地字第1号系统调用——exec 97

3.6.1 exec的机制和用法 98

3.6.2 exec的使用实例 98

3.6.3 exec与fork合作 100

3.6.4关于exec函数的6种形式 103

3.7 gdb调试多进程程序的技巧 103

3.8进程的消亡 104

3.8.1启动例程与main函数 104

3.8.2 exit函数与_exit函数 105

3.8.3 I/O流与I/O库缓存 105

3.8.4 Exit handler 106

3.9守护进程的编写 109

3.9.1进程组、对话期与控制终端 109

3.9.2编程规则与步骤 111

3.9.3出错记录 112

第4章 进程间通信 115

4.1进程间通信概述 115

4.2进程间的传令兵——信号 116

4.2.1信号概述 116

4.2.2信号的捕获与处理 117

4.2.3实例分析 118

4.2.4使用gdb调试信号 121

4.2.5 pending signal 121

4.2.6 sigaction 125

4.3进程间的动脉——管道 127

4.3.1无名管道 127

4.3.2有名(命名)管道 132

4.4进程间的高速公路——共享内存 136

4.4.1共享内存的原理 137

4.4.2主要API 137

4.4.3利用共享内存进行进程间通信的实例 139

4.5高速公路上的红绿灯——信号量 141

4.5.1使用共享内存存在的同步问题 141

4.5.2信号量的实现原理 142

4.5.3使用信号量同步共享内存访问的设计 143

4.5.4信号量编程的主要API 143

4.5.5使用信号量同步共享内存访问的实例分析 145

4.6进程间的邮局——消息队列 150

第5章 多线程编程初步 154

5.1线程的概念和优势 154

5.2多线程编程的基本API 155

5.2.1创建线程pthread_create 155

5.2.2结束线程pthread_exit 155

5.2.3等待线程结束pthread_join 156

5.2.4多线程编程实例分析 156

5.3多线程的同步与互斥 159

5.3.1互斥锁 159

5.3.2信号量 162

5.4线程属性 165

5.4.1创建线程时指定属性 165

5.4.2线程创建后改变属性 167

5.5使用gdb调试多线程程序 173

第6章 网络编程 174

6.1 socket编程所需网络通信基础知识 174

6.1.1客户端程序和服务端程序 174

6.1.2常用的命令 174

6.1.3 TCP/UDP介绍 174

6.1.4数据封包与解包 174

6.1.5 TCP连接建立过程——3次握手 178

6.1.6 TCP连接终止过程——4分节终止序列 178

6.2服务器和客户机的信息函数 179

6.2.1字节序列转换 179

6.2.2地址格式转换 181

6.2.3 IP和域名的转换 182

6.2.4服务信息函数 183

6.3 TCP socket编程 183

6.3.1编程模型 184

6.3.2主要API 185

6.3.3实例分析 187

6.3.4令人困惑的“不能绑定到指定地址”的错误 191

6.3.5套接口地址结构几点特别说明 194

6.3.6迭代服务器与并发服务器 195

6.4 UDP socket编程 200

6.4.1编程模型 200

6.4.2主要API 201

6.4.3实例分析 202

6.4.4特别说明 205

6.5高级套接字函数 206

6.5.1 send和recv 206

6.5.2 sendmsg和recvmsg 206

6.5.3 shutdown 207

第7章Linux下C开发环境使用进阶 209

7.1编辑器vim的使用 209

7.1.1命令行模式的操作 209

7.1.2命令行模式切换到输入模式 211

7.1.3最后行模式的操作 211

7.1.4 vim的注意事项 212

7.2编译器gcc的使用 213

7.2.1 gcc警告提示功能 213

7.2.2库依赖 215

7.2.3 gcc代码优化 216

7.2.4 gcc编译加速 218

7.2.5 gcc的错误类型及对策 218

7.3程序库文件的制作、链接、加载精解 219

7.3.1 linux下ELF文件格式 219

7.3.2库函数的编写者如何制作库文件 223

7.3.3应用程序的编写者如何使用(链接)库文件 224

7.3.4应用程序的使用者如何加载库文件 225

7.3.5静态库文件的制作和使用 226

7.4调试器gdb的使用 227

7.4.1 gdb的命令概貌 227

7.4.2 gdb中运行Linux的shell程序 229

7.4.3在gdb中配置程序运行环境 229

7.4.4调试已运行的程序 230

7.4.5暂停/恢复程序运行 230

7.4.6查看栈信息 237

7.4.7查看源程序 239

7.4.8查看运行时数据 242

7.4.9改变程序的执行 249

7.5 autoconf和automake生成Makefile文件 253

7.5.1引子 253

7.5.2模拟需求 253

7.5.3工具简介 254

7.5.4生成Makefile的来龙去脉 255

7.5.5 Configure.in的八股文 256

7.5.6实战Makefile.am 258

参考文献 261

后记 262