《Unix系统Ⅴ第4版 程序员指南 ANSI C和编程支持工具 programmer's guide ANSIC C and programming support tools》求取 ⇩

第一章 概述1

1·2 C编译1

目录1

目的1

1·1 引言1

1·3 C语言2

1·3·3 C程序怎样与shell通信3

记法约定3

1·3·2 库和前导文件3

1·3·1 用C进行模块化程序设计3

1·4 内容提要4

1·4·2 程序分析5

1·4·1 创建可执行程序5

1·4·4 程序开发6

1·4·3 程序管理6

1·5 其它工具7

1·4·5 高级编程公用程序7

2·2 编译和连接9

2·1 引言9

第二章 C编译系统9

11

图2-1 C编译系统的组织11

2·2·1 基本的cc命令行语法11

2·2·2 常用的cc命令行任选项15

2·2·2·1 搜索前导文件15

2·2·2·2 为符号排错准备程序16

2·2·2·3 为梗概准备程序16

2·2·2·4 优化用户程序16

2·2·3 连接编辑16

2·2·3·1 默认的安排17

2·2·3·2 连接标准库17

2·2·3·3 创建并连接档案库及共享目标库19

2·2·3·4 规定由连接编辑程序搜索的目录21

2·2·3·5 规定动态连接程序搜索的目录23

2·2·3·6 核实运行时的兼容性25

2·2·3·7 动态连接编程接口25

2·2·3·8 实现25

2·2·3·9 建立共享目标的准则27

2·2·3·10 重复定义的符号31

2·2·3·11 快速参考指南32

2·3 库和前导文件34

2·3·1 前导文件34

2·3·2 怎样使用库函数35

图2-2 string(3S)手册页摘要36

2·3·3 C库(libc)37

图2-3 怎样在程序中使用strcmp()37

2·3·3·2 3C子节中的例程38

图2-4 标准I/O函数和宏38

2·3·3·1 3S子节中的例程38

图2-5 字符串操作39

图2-6 对8位字符编码的整数值分类40

2·3·4 数学库(libm)41

图2-7 字符、整数或字符串的转换41

2·3·3·3 系统调用41

图2-8 数学函数42

2·3·5 通用库(libgen)44

图2-9 libgen函数44

2·3·6·1 用户始终拥有的三个文件45

2·3·6 标准I/O45

2·3·6·2 命名的文件46

2·3·6·3 传递命令行实参47

图2-10 使用argv[1]传递文件名48

图2-11 使用命令行实参设置标志49

第三章 C语言51

3·1·1·1 全局行为51

3·1 引言51

3·1·1 编译方式51

3·1·2 怎样使用本章52

3·1·3 翻译的阶段52

3·2·2 标识符53

3·2·1 单词53

3·2 源码文件和单词切分53

3·2·3 关键字53

3·2·4·1 整数常量54

3·2·4·2 浮点数常量54

3·2·4 常量54

3·2·4·3 字符常量54

3·2·4·4 宽字符和多字节字符55

3·2·7 注释56

3·2·5 字符串字面量56

3·2·6 宽字符串字面量56

3·3 预处理56

3·3·1 三元组序列56

3·3·2·1 预处理数57

3·3·3 预处理指令57

3·3·3·1 预处理操作符57

3·3·2 预处理单词57

3·3·3·2 宏定义和扩展58

3·3·3·4 条件编译59

3·3·3·3 文件蕴含59

3·3·3·5 行控制60

3·3·3·6 断言61

3·3·3·7 版本控制62

3·3·3·8 pragmas62

3·4·2·1 基本类型63

3·3·3·9 出错信息生成63

3·3·3·10 预定义的名字63

3·4 声明和定义63

3·4·2 类型63

3·4·1 引言63

3·4·2·3 结构和联合64

3·4·2·2 类型限定符64

3·4·2·4 枚举类型66

3·4·3 作用域66

3·4·4 存储保留期66

3·4·5 存储类区分符67

3·4·6 声明符67

3·4·6·1 指针声明符68

3·4·6·2 数组声明符69

3·4·6·3 函数声明符69

3·4·7 函数定义70

3·5·1·4 浮点数和双精度数71

3·5 转换和表达式71

3·5·1·1 字符和整数71

3·5·1·2 有符号和无符号整数71

3·5·1·3 整型和浮点型71

3·5·1 隐式转换71

3·5·1·5 普通算术转换72

3·5·2 表达式72

3·5·2·1 对象和左值72

3·5·3·1 单目操作符73

3·5·2·2 初等表达式73

3·5·3 操作符73

3·5·3·2 强制操作符——显式转换74

3·5·3·3 乘法类操作符74

3·5·3·4 加法类操作符75

3·5·3·7 相等操作符76

3·5·3·8 按位与操作符76

3·5·3·5 移位操作符76

3·5·3·6 关系操作符76

3·5·3·10 按位或操作符77

3·5·3·9 按位异或操作符77

3·5·3·11 逻辑与操作符77

3·5·3·12 逻辑或操作符77

3·5·3·13 条件运算符78

3·5·3·14 赋值表达式78

3·5·3·16 结构操作符79

3·5·4 操作符的结合性和优先级79

3·5·3·15 逗号操作符79

3·5·5 常量表达式79

3·5·6 初始化80

3·6 语句82

3·6·1 表达式语句82

3·6·2 复合语句82

3·6·3·3 switch83

3·6·3·1 if83

3·6·3·2 else83

3·6·3 选择语句83

3·6·4 迭代语句84

3·6·4·1 while84

3·6·4·2 do-while84

3·6·5 转移语句85

3·6·5·1 goto85

3·6·5·2 break85

3·6·4·3 for85

3·6·5·3 continue86

3·6·5·4 return86

3·7 可移植性的考虑86

4·1 引言89

4·1·1 消息类型和可用任选项89

第四章 C编译程序的诊断89

4·2 消息90

4·1·2 消息中的操作符名90

4·3 操作符名186

4·4 其它出错消息187

5·1 引言189

5·1·1 任选项和指令189

5·1·2 lint和编译程序189

第五章 lint189

5·1·3 消息格式190

5·2 lint做什么190

5·2·1 一致性检查190

5·2·2 检查可移植性191

5·2·3 可疑的结构193

5·3 使用194

5·3·1 lint库195

5·3·2 lint过滤程序196

5·3·3 任选项和指令列表196

5·4 针对lint的消息199

6·1 引言229

第六章 sdb229

6·2 命令行语法230

6·3 交互式命令231

6·3·1 显示栈轨迹232

6·3·2 检查变量232

6·3·3 文件的显示和操纵236

6·3·4 活进程的排错237

6·3·5 机器语言级排错240

6·3·6 退出241

6·4 例子241

图6-1 源程序c_recurse·c242

图6-2 sdb用法例子243

第七章 lprof245

7·1 C梗概工具的概述245

7·1·1 怎样使用梗概处理程序246

7·2 编译你的程序246

7·3 运行梗概处理过的程序247

7·3·1 RPOFOPTS环境变量247

7·3·2 使用PROFOPTS的例子248

7·3·2·1 关闭梗概处理248

7·3·2·2 合并数据文件249

7·3·2·3 在另一目录中保留数据文件249

7·3·2·4 对shell命令文件进行梗概处理249

7·4 调用lprof250

7·3·2·5 对调用Fork的程序进行梗概处理250

7·4·1 寻找源文件252

7·4·2 源列表输出252

7·4·3 突出未执行的行253

图7-1 lprof默认输出例子253

图7-2 lprof-x输出例子254

7·4·4 总结报告254

7·4·5 合并了的数据255

图7-3 lprof-s输出例子255

7·5 对档案或共享目标库代码进行梗概处理256

7·6 注意事项257

7·6·1 运行时麻烦257

7·6·2 找不到数据文件258

7·7 改善程序性能258

7·7·1 对lprof程序执行prof和lprof258

图7-4 prof输出259

图7-5 函数CAfind()的lprof输出259

图7-6 lprof对CAfind()新版本的输出262

图7-7 对lprof的新版本的prof输出263

图7-8 对一个测试完全集的lprof总结输出264

7·8 改善测试覆盖率264

图7-9 lprof-x的部分输出265

7·8·1 搜寻没有文档化的任选项265

7·8·2 从未调用的函数265

图7-10 lprof-x对putdat()的输出266

7·8·3 难于形成的出错条件266

8·2·1 第一步:设置环境267

第八章 cScope267

8·1·1 cscope怎样工作267

8·1 引言267

8·2 怎样使用cscope267

8·2·3 第三步:代码定位268

8·2·2 第二步:调用cscope268

图8-2 菜单操纵命令269

图8-1 cscope任务菜单269

图8-3 请求对正文串进行搜索270

图8-4 cscope列举出包含正文串的那些行271

图8-5 在初始搜索后可供使用的命令271

图8-6 检查被cscope找到的代码行272

图8-7 请求列出所有调用alloctest()的函数273

图8-8 cscope列出调用alloctest()的函数274

图8-9 cscope列出调用mymalloc()的函数275

8·2·4 第四步:编辑代码276

图8-10 用编辑程序检查dispinit()276

8·2·5 命令行任选项277

图8-11 使用cscope来解决问题277

8·2·6 使用观察路径279

8·2·7 对cscope和编辑程序调用进行栈处理280

8·2·8·1 把常数改变成预处理程序符号280

8·2·8 例子280

图8-12 改变正文串281

图8-13 cscope提示你选择要改变的行282

图8-14 选择要改变的行的命令282

图8-15 标记要改变的行283

图8-16 cscope显示改变了的正文行283

图8-17 从cscope中进入shell284

8·2·8·2 给函数增加一个实参284

8·3·1 不知道终端类型285

8·3·2 编辑程序的命令行语法285

8·3 注意事项285

8·2·8·3 改变变量的值285

第九章 make287

9·1 引言287

9·2 基本特性287

9·3·2 续行291

9·3·3 宏定义291

9·3 描述文件和替换291

9·3·1 注释291

9·3·4 一般形式292

9·3·5 依赖性信息292

9·3·6 可执行命令292

9·3·7 ?*、?@和?<的扩展293

9·3·8 输出转换293

9·3·9 递归的Makefile294

9·3·10 后缀及转换规则294

9·3·11 隐含规则294

图9-1 默认的转换路径总结295

9·3·12 档案库296

9·3·13 源代码控制系统文件名298

9·3·17 动态依赖性参数299

9·3·15 蕴含的文件299

9·3·14 空后缀299

9·3·16 SCCS Makefile文件299

9·4 命令用法300

9·4·2 环境变量301

9·4·1 make命令301

9·5 建议和告诫302

9·6 内部规则303

图9-2 make的内部规则303

10·2·1 术语309

10·2·2 用admin创建一个SCCS文件309

第十章 SCCS309

10·1 引言309

10·2 基本用法309

10·2·3 用get检索一个文件310

10·2·4 用delta记录改动311

10·2·5 进一步讨论get311

10·2·6 help命令312

图10-1 一个SCCS文件的演变313

10·3 delta编号313

图10-2 带有分支delta的树形结构314

10·4 SCCS命令约定315

图10-3 扩展的分支概念315

10·4·1 x·file和z·file316

10·4·2 出错消息316

10·5 SCCS命令316

10·5·1 get命令317

10·5·1·1 ID关键字318

10·5·1·2 不同版本的检索318

10·5·1·3 以产生delte为目的的检索320

10·5·1·4 取消get-e321

10·5·1·5 附加的get任选项321

10·5·1·6 不同SID的并行编辑321

10·5·1·7 相同SID的并行编辑323

图10-4 新SID的确定323

10·5·1·8 影响输出的关键字母324

10·5·2 delta命令325

10·5·3 admin命令327

10·5·4 SCCS文件的创建327

10·5·4·1 为初始delta插入注释328

10·5·4·2 SCCS文件参数的初始化和修改328

10·5·5 prs命令329

10·5·7 help命令331

10·5·8 rmdel命令331

10·5·6 sact命令331

10·5·9 cdc命令332

10·5·10 what命令332

10·5·11 sccsdiff命令333

10·5·12 comb命令333

10·5·14 vc命令334

10·5·13 val命令334

10·6 SCCS文件334

10·6·1 保护334

10·6·2 格式335

10·6·3 审计336

第十一章 lex337

1 1·1 引言337

11·2 生成一个词法分析器程序337

图11-1 用lex创建和使用一个词法分析器339

11·3 编写lex源339

11·3·1 lex规则的基础339

11·3·1·2 操作符340

11·3·1·1 正则表达式340

图11-2 lex操作符342

11·3·1·3 动作342

11·3·2·1 一些特殊特征344

11·3·2 lex高级用法344

11·3·2·2 lex例程346

11·3·2·3 定义348

11·3·2·4 启动条件349

11·3·2·5 用户例程351

11·4 lex与yacc一同使用352

11·5 其它354

11·6 源格式小结355

第十二章 YACC357

12·1 引言357

12·2 基本的规格说明359

12·2·1 动作360

12·2·2 词法分析363

12·3 语法分析程序的操作365

12·4 歧义性和冲突368

12·5 优先级373

12·6 出错处理376

12·7 yacc环境379

12·8·1 输入风格380

12·8·2 左递归380

12·8 准备规格说明的一些建议380

12·8·3 与词法有关的提示381

12·9·1 在动作中模拟出错和接收382

12·8·4 保留字382

12·9·2 在封闭规则中存取值382

12·9 一些进一步的论题382

12·9·3 对任意类型值的支持383

12·9·4 yacc输入语法385

12·10 两个例子387

12·10·1 一个简单的例子387

12·10·2 一个高级的例子390

第十三章 目标文件397

13·1 引言397

13·1·1 文件格式397

图13-1 目标文件格式398

13·1·2 数据表示398

13·2 程序连接399

图13-3 ELF头399

图13-2 32位数据类型399

13·2·1 ELF头399

13·2·1·1 ELF标识402

图13-4 e-ident[ ]标识索引402

图13-5 数据编码ELFDATA2LSB404

图13-6 数据编码ELFDATA2MSB404

图13-7 WE32100标识,e-ident405

13·2·1·2 3B2计算机专用的ELF头标志405

图13-9 6386计算机标识,e-ident405

13·2·1·3 6386计算机专用的ELF头标志405

图13-8 处理机专用的标志,e-flags405

13·2·2 节头406

图13-10 特殊节的索引406

图13-11 节头407

图13-12 节类型,sh-type409

图13-13 节头表表项,索引0411

图13-14 节属性标志,sh-flags411

图13-15 sh-link和sh-info的解释412

13·2·2·1 特殊的节412

图13-16 特殊的节413

图13-17 特殊的节·got和·plt415

13·2·3 串表415

图13-18 串表416

13·2·4 符号表416

图13-19 串表索引416

图13-20 符号表表项417

图13-21 符号的约束条件,ELF32_ST_BIND418

图13-22 符号的类型,ELF32_ST_TYPE419

图13-23 符号表表项:索引0420

13·2·5 重定位420

13·2·4·1 符号值420

图13-24 重定位表项421

图13-25 3B2计算机的可重定位字段422

13·2·5·1 3B2计算机专用的重定位类型422

图13-26 3B2计算机的重定位类型423

13·2·5·2 6386计算机专用的重定位类型424

图13-27 6386计算机的可重定位字段425

图13-28 6386计算机的重定位类型426

13·3 程序执行427

13·3·1 程序头427

图13-29 程序头428

图13-30 段类型,p-type429

13·3·1·2 段权限430

13·3·1·1 基地址430

图13-31 段标志位,p-flags430

图13-32 段权限431

图13-33 正文段431

13·3·1·3 段内容431

图13-34 数据段432

13·3·1·4 注意节432

图13-35 注意信息432

图13-36 注意段例433

图13-37 可执行文件434

13·3·2 处理机指定的程序装入434

图13-38 程序头段435

图13-39 进程映象段436

图13-40 共享目标段编址的例子437

13·3·4 动态连接程序437

13·3·3 程序解释器437

13·3·4·1 动态节438

图13-41 动态结构439

图13-42 动态数组标记,d-tag440

13·3·4·2 共享目标依赖性443

13·3·4·3 处理机指定的全局位移表444

13·3·4·4 处理机指定的过程连接表445

图13-43 全局位移表445

图13-44 3B2计算机的过程连接表446

图13-45 6386计算机绝对的过程连接表447

图13-46 6386计算机位置独立的过程连接表447

13·3·4·5 迟缓的符号联编448

13·3·4·6 散列表449

图13-47 符号散列表449

13·3·4·7 初始化和终止函数450

图13-48 散列函数450

14·2 IEEE算术451

14·1 引言451

第十四章 浮点运算451

14·2·1 数据类型和格式452

14·2·1·2 双精度数452

14·2·1·1 单精度数452

14·2·2 规范化数453

14·2·3 非规范化数453

14·2·4 最大的和最小的可表示的值453

14·2·5 某些特殊情况的值453

14·2·6 NaN和无穷大454

14·2·7 舍入控制455

14·2·8 异常事件,粘着位和捕俘位456

14·2·9 3B2计算机上的异常处理457

14·2·10 6386计算机上的异常处理458

14·3 二进制和十进制值之间的转换459

14·4 单精度浮点运算461

14·4·1 单精度函数463

14·5 扩充的双精度463

14·6·1 浮点格式到整数的转换464

14·6·2 平方根464

14·6·3 比较和无序条件464

14·6 IEEE的要求464

14·6·4·1 十进制的转换465

14·6·4 输入/输出中的NaN和无穷大465

第十五章 m4宏处理程序467

15·1 概述467

15·2·1 定义宏功能469

15·2 m4宏功能469

15·2·2 加引号470

15·2·3 实参471

15·2·4 内部运算功能473

15·2·5 文件蕴含474

15·2·6 转向475

15·2·8 条件475

15·2·7 系统命令475

15·2·9 字符串操纵476

15·2·10 打印477

附录A 增强的asm工具479

A·1 引言479

A·2 例子479

A·2·2 使用480

A·2·1 定义480

A·4 详细的描述481

A·4·1 使用asm宏功能481

A·3 术语的定义481

A·4·2 定义482

A·4·2·1 存储482

A·4·2·2 asm体483

A·5 写asm宏功能483

附录B 映射文件任选项485

B·1 引言485

B·2 使用映射文件任选项485

B·3·1 段声明486

B·3 映射文件的结构和语法486

B·3·2 映射指令488

B·4 映射的例子490

图B-1 用户定义的映射文件490

B·3·3 长度符号声明490

B·5 映射文件任选项的默认值491

图B-2 默认映射文件492

B·6 内部映射结构493

图B-3 简单映射结构493

B·7 出错信息495

B·7·2 致命错误495

B·7·1 告诫495

词汇表497

1992《Unix系统Ⅴ第4版 程序员指南 ANSI C和编程支持工具 programmer's guide ANSIC C and programming support tools》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由贾耀良 1992 北京:电子工业出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。