标题：Linux C编程
基本信息
ISBN：9787302113690  
定价：36元
印次：1-2
装帧：平装
印刷日期：2005-12-30
图书简介
本书系统地介绍了在Linux平台下用C语言进行程序开发的过程，通过列举大量的程序实例，使读者很快掌握在Linux平台下进行C程序开发的方法和技巧，并具备开发大型应用程序的能力。
本书内容翔实，主要包括：Linux平台下C语言及其编程环境的介绍，C语言编译器、调试工具和自动维护工具的使用方法，Linux系统提供的特有函数调用，在C程序中访问文件的方法言网络编程方法以及curses编程等。
本书结构合理、概念清晰、实例丰富，并具有很强的启发性和实用性，适合于有一定的C语言基础，需要在Linux系统上编程的程序设计人员阅读。
作者推荐
《linux c从入门到精通编程》从初学者的角度出发，通过通俗易懂的语言，丰富多彩的实例，详细介绍丁在linux系统下使用c语言进行应用程序开发应该掌握的各方面技术。全书共分20章，包括linux系统概述、c语言基础、内存管理、基本编辑器vim和emacs、gcc编译器、gdb调试工具、进程控制、进程间通信、文件操作、文件的输入/输出操作、信号及信号处理、网络编程、make编译基础、linux系统下的c语言与数据库、集成开发环境、界面开发基础、界面布局、界面构件开发、glade设计程序界面、mp3音乐播放器。所有知识都结合具体实例进行介绍，涉及的程序代码给出了详细的注释，可以使读者轻松领会linux系统下的c语言应用程序开发的精髓，快速提高开发技能。另外，本书除了纸质内容之外，配书光盘中还给出了海量开发资源库，主要内容如下：　语音视频讲解：总时长4小时，共30段 实例资源库 881个经典范例　模块资源库：15个常用模块项目 案例资源库：15个实用项目　测试题库系统：616道能力测试题目 面试资源库：371道企业面试真题　ppt电子教案　 《linux c从入门到精通编程》适合作为软件开发入门者的自学用书，也适合作为高等院校相关专业的教学参考书，也可供开发人员查阅、参考。
书籍目录
目录
第1章Linux下C语言编程简介 1
1.1Linux简介 1
1.2C语言的简介和特点 4
1.3Linux程序设计基础知识 5
1.3.1程序安装目录 5
1.3.2头文件 5
1.3.3库文件 6
1.4Linux下C语言编程环境
概述 7
1.5Linux程序设计的特点 9
1.6Linux下C语言编码的风格 10
1.6.1GNU编程风格 10
1.6.2Linux内核编程风格 11
第2章vi与emacs编辑器 12
2.1vim概述及应用 12
2.2emacs简介及应用 17
2.3Linux下的其他编辑器 21
2.3.1最简单的文本编辑器ed 21
2.3.1最容易上手的编辑器
pico 23
第3章gcc编译器 27
3.1gcc简介 27
3.2使用gcc 28
3.3gcc警告提示功能 30
3.4库依赖 32
3.5gcc代码优化 33
3.6加速 34
3.7gcc常用选项 35
3.8gcc的错误类型及对策 36
第4章gdb调试器 38
4.1gdb概述 38
4.2使用gdb 41
4.2.1gdb的命令概貌 42
4.2.2gdb中运行Linux的
shell程序 44
4.2.3在gdb中运行程序 44
4.2.4调试已运行的程序 45
4.2.5暂停/恢复程序运行 45
4.2.6查看栈信息 52
4.2.7查看源程序 54
4.2.8查看运行时数据 56
4.2.9改变程序的执行 64
第5章使用make 68
5.1makefile实例文件分析 68
5.1.1make与makefile文件
的关系 69
5.1.2在makefile文件中使用
变量 71
5.1.3让make自动推导依赖
关系 72
5.1.4另类风格的makefile
文件 73
5.1.5清空目标文件的规则 73
5.2makefile文件概述 74
5.3make书写规则 76
5.3.1规则举例 76
5.3.2在规则中使用通配符 77
5.3.3文件搜寻 78
5.3.4伪目标 79
5.3.5多目标 80
5.3.6静态模式 81
5.3.7自动生成依赖性 82
5.4使用命令 84
5.4.1显示命令 84
5.4.2执行命令 84
5.4.3命令出错 85
5.4.4嵌套执行make 85
5.4.5定义命令包 87
5.5使用变量 88
5.5.1变量的基础 88
5.5.2赋值变量 89
5.5.3变量的高级用法 91
5.5.4追加变量值 93
5.5.5override指示符 94
5.5.6多行变量 94
5.5.7环境变量 95
5.5.8目标变量 95
5.5.9模式变量 96
5.6使用条件判断 96
5.6.1示例 97
5.6.2语法 98
5.7使用函数 100
5.7.1函数的调用语法 100
5.7.2字符串处理函数 100
5.7.3文件名操作函数 104
5.7.4foreach函数 105
5.7.5if函数 106
5.7.6call函数 106
5.7.7origin函数 107
5.7.8shell函数 108
5.7.9控制make的函数 108
5.8make的运行 109
5.8.1make的退出码 109
5.8.2指定makefile文件 110
5.8.3指定目标 110
5.8.4检查规则 111
5.8.5make的参数 112
5.9隐含规则 115
5.9.1使用隐含规则 116
5.9.2隐含规则一览 117
5.9.3隐含规则使用的变量 119
5.9.4隐含规则链 121
5.9.5定义模式规则 121
5.9.6隐含规则搜索算法 125
5.10使用make更新函数库
文件 126
5.10.1函数库文件的成员 126
5.10.2函数库成员的隐含规则 127
5.10.3函数库文件的后缀规则 127
5.10.4注意事项 128
第6章文件的操作 129
6.1Linux的文件结构 129
6.1.1目录结构 129
6.1.2文件和设备 130
6.2系统调用和设备驱动程序 132
6.3库函数 132
6.4硬件设备文件的底层访问 133
6.4.1write系统调用 134
6.4.2read系统调用 135
6.4.3open系统调用 136
6.4.4creat系统调用 137
6.4.5访问权限的初始化值 137
6.4.6umask变量 138
6.4.7close系统调用 139
6.4.8ioctl系统调用 140
6.4.9lseek系统调用 142
6.4.10fstat、stat和lstat系统
调用 144
6.4.11dup和dup2系统调用 145
6.5文件和目录的维护 146
6.5.1chmod系统调用 146
6.5.2chown系统调用 147
6.5.3unlink、link、symlink
系统调用 147
6.5.4mkdir和rmdir系统调用 148
6.5.5chdir系统调用和getcwd
函数 148
第7章标准I/O库 149
7.1流和FILE对象 149
7.2标准输入、标准输出和标
准出错 149
7.3缓存 150
7.3.1全缓存 150
7.3.2行缓存 150
7.3.3不带缓存 150
7.4打开流 152
7.5读和写流 154
7.5.1输入函数 154
7.5.2输出函数 156
7.6每次一行I/O 156
7.7标准I/O的效率 157
7.8二进制I/O 158
7.9定位流 160
7.10格式化I/O 161
7.10.1格式化输出 161
7.10.2格式化输入 161
7.11实现细节 162
7.12临时文件 162
第8章进程控制 163
8.1进程概述 163
8.1.1进程的状态及其状态
转换 163
8.1.2Linux进程简介 165
8.1.3进程控制 166
8.1.4进程调度的概念 168
8.2进程的一般操作 169
8.2.1获得进程id 169
8.2.2fork创建进程 170
8.2.3exec系统调用 172
8.2.4exit和_exit 177
8.2.5wait系统调用 179
8.2.6sleep函数调用 187
8.3进程的特殊操作 187
8.3.1setuid和setgid系统
调用 188
8.3.2setpgrp和setpgid系统
调用 189
8.3.3chdir系统调用 190
8.3.4chroot系统调用 190
8.3.5nice系统调用 191
第9章进程间的通信 192
9.1Linux下进程通信概述 192
9.2管道及有名管道 193
9.2.1管道概述及相关API
应用 194
9.2.2有名管道概述及相关API
应用 201
9.3信号及其处理 207
9.3.1信号及信号来源 207
9.3.2信号的种类 207
9.3.3进程对信号的响应 209
9.3.4信号的发送 209
9.3.5信号的安装(设置信号关
联动作) 212
9.3.6信号集及信号集操作
函数 215
9.3.7信号阻塞与信号未决 216
9.3.8信号生命周期 216
9.3.9信号编程注意事项 218
9.3.10信号应用实例 220
9.4消息队列 224
9.4.1消息队列基本概念 225
9.4.2操作消息队列 225
9.4.3获得或设置消息队列
属性 226
9.4.4消息队列的限制 229
9.4.5消息队列应用实例 230
9.5信号灯概述 232
9.5.1操作信号灯 233
9.5.2信号灯的限制 235
9.5.3竞争问题 236
9.5.4信号灯应用实例 236
9.6共享内存 239
9.6.1内核怎样保证各个进程
寻址到同一个共享内存
区域的内存页面 240
9.6.2mmap()及其相关系统
调用 241
9.6.3mmap()范例 242
9.6.4对mmap()返回地址的
访问 246
9.6.5系统V共享内存原理 249
9.6.6系统V共享内存API 250
9.6.7系统V共享内存限制 250
9.6.8系统V共享内存范例 250
9.7套接口(Sockets)通信 253
第10章线程简介 254
10.1线程概述 254
10.2创建线程 255
10.2.1线程创建属性 255
10.2.2线程创建的Linux
实现 256
10.3线程取消 256
10.3.1线程取消的语义 256
10.3.2取消点 257
10.3.3程序设计方面的
考虑 257
10.3.4与线程取消相关的
pthread函数 257
10.4私有数据 258
10.4.1创建和注销 258
10.4.2访问 259
10.4.3使用范例 259
10.5互斥锁 261
10.5.1创建和销毁 261
10.5.2互斥锁属性 261
10.5.3锁操作 262
10.5.4其他 262
10.6条件变量 263
10.6.1创建和注销 263
10.6.2等待和激发 263
10.6.3其他 264
10.7异步信号 266
10.8线程终止 267
10.8.1线程终止方式 267
10.8.2线程终止时的清理 267
10.8.3线程终止的同步及其
返回值 268
10.8.4关于pthread_exit()和
return 269
10.9杂项 269
10.9.1获得本线程ID 270
10.9.2判断两个线程是否为
同一线程 270
10.9.3仅执行一次的操作 270
10.9.4pthread_kill_other_
threads_np() 271
第11章curses编程简介 273
11.1curses基本结构 273
11.2颜色和属性 276
11.3窗口和基垫 279
11.4光标和屏幕输出 285
11.5键盘输入 288
11.5.1cbreak() 288
11.5.2延迟模式 288
11.5.3回显模式和输出
延迟 289
11.5.4功能键转换 289
11.6菜单 292
11.7表单 296
11.8用curses函数编写一个
汉诺塔游戏 301
11.8.1汉诺塔游戏 301
11.8.2定义数据结构 302
11.8.3柱的实现 302
11.8.4盘的实现 302
11.8.5接收输入的实现 303
11.8.6移动盘的实现 303
第12章网络编程 311
12.1TCP/IP简介 311
12.1.1IP及相关协议 312
12.1.2传输控制协议TCP 317
12.1.3用户数据报协议
UDP 319
12.2Socket编程简介 319
12.2.1Socket编程相关数据
类型定义 320
12.2.2打开Socket描述符、
建立绑定并建立连接 320
12.2.3Listen()--监听是
否有服务请求 321
12.2.4accept()--连接端
口的服务请求 322
12.2.5send()和recv()--
数据传输 322
12.2.6sendto()和recvfrom()
--利用数据报方式
进行数据传输 323
12.2.7close()和shutdown()
--结束数据传输 323
12.2.8DNS--域名服务
相关函数 324
12.3面向连接的客户机/服务器
代码实例 324
12.4ping命令的简单实现 328
12.4.1ping命令简介 329
12.4.2ICMP协议简介 329
12.4.3IP报头格式 330
12.4.4ICMP报头格式 331
12.4.5ICMP数据报 333
12.4.6数据统计 333
12.4.7完整的ping命令
代码 334
第13章实例一：Linux下CD
播放器 339
13.1音频CD 339
13.2设备控制 340
13.3音轨处理 342
13.3.1计算音轨数目 342
13.3.2定位音轨位置 344
13.3.3获取音轨信息 345
13.4CD播放 347
13.4.1播放(play) 347
12.4.2停止(stop) 349
13.4.3暂停(pause) 350
12.4.4继续(resume) 351
13.5音量调节 352
13.6子码信息 354
第14章实例二：一个简单的
服务器端/客户端程序 357
附录 361
参考文献 371[1]