搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Linux环境下C编程指南
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302220817
  • 作      者:
    杨树青,王欢编著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2010
收藏
编辑推荐
  通过大量程序实例介绍Linux平台下进C程序开发的方法和技巧。
  全面介绍C语言编译器。调试工具和自动维护工具的使用方法。
  详细介绍进程、文件的相关操作以及输入/输出操作和内存管理。
  重点介绍C语言网络编程基本原理和编程技术。
展开
内容介绍
  《Linux环境下C编程指南(第2版)》系统地介绍在Linux平台下用C语言进行程序开发的过程,通过列举大量的程序实例,使读者能够很快掌握在Linux平台下进行C程序开发的方法和技巧,并具备开发大型应用程序的能力。《Linux环境下C编程指南(第2版)》内容翔实,主要包括Linux平台下C语言及其编程环境的介绍,C语言编译器、调试工具和自动维护工具的使用方法,进程、文件的相关操作,输入输出操作和内存管理,C语言网络编程方法等。
  《Linux环境下C编程指南(第2版)》是作者根据多年来的开发和教学经验并融合大量的编程实例而著成的。读者通过《Linux环境下C编程指南(第2版)》的学习能够快速地学会Linux下的C语言编程,并能从一开始就养成良好的编程习惯,以便于读者低起点、高效率地掌握Linux环境下的编程知识。
  《Linux环境下C编程指南(第2版)》结构合理、概念清晰、实例丰富,并具有很强的启发性和实用性,适合有一定C语言基础,需要在Linux系统上编程的程序设计人员阅读,也可作为本、专科计算机专业的教材或参考书,还可供广大计算机爱好者学习C语言使用。
展开
精彩书摘
  Linux系统的特点如下:
  ◇ 是真正的多用户、多任务、多平台操作系统。
  ◇ 提供具有内置安全措施的分层的文件系统,支持多达32种文件系统。
  ◇ 提供Shell命令解释程序和编程语言。
  ◇ 提供强大的管理功能。
  ◇ 具有内核的编程接口。
  ◇ 具有图形用户接口。
  ◇ 具有大量有用的实用程序和通信、联网工具。
  ◇ 具有面向屏幕的编辑软件。
  ◇ 组成部分的源代码是开放的,任何人都能修改和重新发布它。
  ◇ 不仅可以运行自由发布的应用软件,还可以运行许多商业化的应用软件。
  Linux系统的主要功能如下。
  1.存储管理
  Linux采取页面式存储管理机制,每个页面的大小随处理芯片而异。在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址,页表还对物理页的访问权限做了规定,从而达到存储保护的目的。
  Linux存储空间的分配遵循的原则是不到有实际需要的时候不分配物理空间,这样可以最大限度地利用物理存储器。
  2.进程管理
  在Linux中,进程是资源分配的基本单位,所有资源都是以进程为对象进行分配的。在一个进程的生命周期中,会用到许多系统资源,Linux的设计可以准确描述进程的状态和资源的使用情况,以确保不出现某些进程过度占用系统资源而导致另一些进程无休止地等待的情况。
  Linux创建进程的方法是采用Copy in write技术,不复制父进程的空间,只是复制父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限置为只读,这样可以降低系统资源的开销。
展开
目录
第1章 C语言基础和Linux系统概述 1
1.1 C语言基础 2
1.1.1 C语言概述 2
1.1.2 数据类型 2
1.1.3 运算符和表达式 9
1.1.4 C程序语句 10
1.1.5 函数 15
1.1.6 编译预处理 16
1.2 Linux系统概述 18
1.2.1 Linux系统的发展历史 18
1.2.2 Linux系统的特点及主要功能 19
1.2.3 Linux系统的主要产品 20
1.3 本章小结 20

第2章 内存管理 21
2.1 静态内存与动态内存 22
2.1.1 静态内存 22
2.1.2 动态内存 23
2.2 安全性问题 24
2.3 内存管理操作 25
2.3.1 动态内存的分配 25
.2.3.2 动态内存的释放 25
2.3.3 调整动态内存的大小 27
2.3.4 分配堆栈 28
2.3.5 内存锁定 29
2.4 使用链表 29
2.5 内存映像I/O 32
2.5.1 创建内存映像 33
2.5.2 撤销内存映像 33
2.5.3 将内存映像写入外存 34
2.5.4 改变内存映像的属性 36
2.6 本章小结 37

第3章 vim与Emacs编辑器 39
3.1 vim简介 40
3.1.1 启动与退出vim 40
3.1.2 命令行模式的操作 41
3.1.3 命令行模式切换到输入模式 43
3.1.4 最后行模式的操作 43
3.2 Emacs简介 44
3.2.1 Emacs编辑器的运行和结束 44
3.2.2 基本操作 45
3.3 Emacs的C模式 47
3.3.1 自动缩进 47
3.3.2 注释 47
3.3.3 预处理扩展 47
3.3.4 自动状态 47
3.3.5 使用Emacs进行编译和调试 48
3.4 本章小结 48

第4章 gcc编译器 49
4.1 gcc编译器简介 50
4.1.1 Hello World程序 50
4.1.2 gcc选项概述 51
4.1.3 警告 53
4.1.4 调试标记 54
4.1.5 利用gcc优化代码 56
4.1.6 使用高级gcc选项 60
4.2 gcc编译流程简介 61
4.2.1 C预处理器cpp 62
4.2.2 GUN连接器ld 62
4.2.3 GUN汇编器as 62
4.2.4 文件处理器ar 62
4.2.5 库显示ldd 63
4.3 其他编译调试工具 63
4.4 本章小结 64

第5章 调试工具gdb 65
5.1 gdb符号调试器简介 66
5.2 gdb功能详解及其应用 66
5.2.1 调试步骤 67
5.2.2 显示数据命令 75
5.2.3 使用断点 80
5.2.4 使用观察窗口 84
5.2.5 查看栈信息 87
5.2.6 查看源程序 89
5.2.7 查看运行时数据 91
5.2.8 改变程序的执行 99
5.2.9 core dump分析 102
5.3 gdb调试多线程程序 108
5.4 其他调试工具 108
5.5 本章小结 108

第6章 进程控制 109
6.1 进程的基本概念 110
6.1.1 进程基本介绍 110
6.1.2 进程的属性 111
6.2 进程控制的相关函数 111
6.2.1 进程的创建 112
6.2.2 进程等待 116
6.2.3 进程的终止 120
6.2.4 进程ID和进程组ID 123
6.2.5 system函数 128
6.3 多个进程间的关系 129
6.3.1 进程组 129
6.3.2 时间片的分配 130
6.3.3 进程的同步 132
6.4 线程 132
6.4.1 线程的创建 132
6.4.2 线程属性的设置 133
6.4.3 结束线程 134
6.4.4 线程的挂起 134
6.4.5 取消线程 135
6.4.6 互斥 136
6.5 本章小结 137

第7章 进程间通信 139
7.1 进程间通信简介 140
7.2 共享内存和信号量 140
7.2.1 SYSV子系统的基本概念 140
7.2.2 共享内存 142
7.2.3 信号量 149
7.3 管道通信 159
7.3.1 管道的创建和关闭 160
7.3.2 管道的读写操作 161
7.4 命名管道 162
7.4.1 命名管道的创建 163
7.4.2 命名管道的使用 163
7.5 消息队列 168
7.5.1 消息队列的创建与打开 169
7.5.2 向消息队列中发送消息 169
7.5.3 从消息队列中接收消息 170
7.5.4 消息队列的控制 170
7.6 本章小结 172

第8章 文件操作 173
8.1 文件系统简介 174
8.1.1 文件 174
8.1.2 文件的相关信息 176
8.1.3 文件系统 177
8.2 基于文件描述符的I/O操作 177
8.2.1 文件的创建、打开与关闭 177
8.2.2 文件的读写操作 180
8.2.3 文件的定位 185
8.3 文件的其他操作 187
8.3.1 文件属性的修改 187
8.3.2 文件的其他操作 189
8.4 特殊文件的操作 192
8.4.1 目录文件的操作 192
8.4.2 链接文件的操作 194
8.4.3 管道文件的操作 196
8.4.4 设备文件 197
8.5 本章小结 197

第9章 输入输出——基于流的操作 199
9.1 流简介 200
9.2 基于流的I/O操作 201
9.2.1 流的打开和关闭 201
9.2.2 缓冲区的操作 203
9.2.3 直接输入输出 205
9.2.4 格式化输入输出 207
9.2.5 基于字符和行的输入输出 210
9.3 临时文件 214
9.4 本章小结 218

第10章 信号及信号处理 219
10.1 信号及其使用简介 220
10.1.1 信号简介 220
10.1.2 信号的使用 222
10.2 信号操作的相关系统调用 223
10.2.1 信号处理 223
10.2.2 信号的阻塞 231
10.2.3 发送信号 237
10.3 信号处理的潜在危险 245
10.4 本章小结 245

第11章 网络编程 247
11.1 网络编程基本原理 248
11.1.1 计算机网络体系结构模式 248
11.1.2 TCP/IP协议 249
11.1.3 客户机/服务器模式 250
11.1.4 套接口编程基础 254
11.1.5 IP地址转换 265
11.2 TCP套接口编程 270
11.2.1 基于TCP的客户机/服务器模式 271
11.2.2 信号处理 278
11.2.3 高级技术 279
11.3 UDP套接口编程 297
11.3.1 基于UDP的客户机/服务器模式 297
11.3.2 主要系统调用 298
11.3.3 基于UDP套接口编程示例 299
11.3.4 可靠性问题 302
11.3.5 UDP套接口的连接 304
11.4 原始套接口编程 305
11.4.1 基本形式和操作 305
11.4.2 原始套接口编程实例 306
11.5 网络编程实例 311
11.6 本章小结 315

第12章 底层终端编程 317
12.1 底层终端编程 318
12.1.1 属性控制 318
12.1.2 使用terminfo 320
12.2 伪终端 323
12.3 本章小结 324

第13章 使用make 325
13.1 makefile文件简介 326
13.2 make书写规则 328
13.2.1 规则举例 328
13.2.2 在规则中使用通配符 328
13.2.3 文件搜寻 329
13.2.4 伪目标 330
13.2.5 多目标 331
13.2.6 静态模式 331
13.2.7 自动生成依赖性 332
13.3 使用命令 334
13.3.1 显示命令 334
13.3.2 执行命令 334
13.3.3 命令出错 335
13.3.4 嵌套执行make 335
13.3.5 定义命令包 337
13.4 使用变量 338
13.4.1 变量的基础 338
13.4.2 赋值变量 339
13.4.3 变量的高级用法 341
13.4.4 追加变量值 343
13.4.5 override 指示符 343
13.4.6 多行变量 344
13.4.7 环境变量 344
13.4.8 目标变量 344
13.4.9 模式变量 345
13.5 使用条件判断 346
13.5.1 示例 346
13.5.2 语法 347
13.6 使用函数 348
13.6.1 函数的调用语法 349
13.6.2 字符串处理函数 349
13.6.3 文件名操作函数 352
13.6.4 foreach 函数 354
13.6.5 if 函数 354
13.6.6 call函数 355
13.6.7 origin函数 355
13.6.8 shell函数 356
13.6.9 控制make的函数 357
13.7 make的运行 357
13.7.1 make的退出码 357
13.7.2 指定makefile文件 357
13.7.3 指定目标 358
13.7.4 检查规则 359
13.7.5 make的参数 360
13.8 隐含规则 363
13.8.1 使用隐含规则 364
13.8.2 隐含规则一览 364
13.8.3 隐含规则使用的变量 366
13.8.4 隐含规则链 368
13.8.5 定义模式规则 368
13.8.6 隐含规则搜索算法 372
13.9 使用make更新函数库文件 373
13.9.1 函数库文件的成员 373
13.9.2 函数库成员的隐含规则 374
13.9.3 函数库文件的后缀规则 374
13.9.4 注意事项 374
13.10 高级使用 375
13.10.1 宏的使用 375
13.10.2 内部规则 380
13.10.3 make递归 382
13.10.4 依赖性的计算 383
13.11 库的使用 386
13.11.1 创建库和维护库 386
13.11.2 库的链接 387
13.12 make辅助开发工具 388
13.13 本章小结 388
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证