第一册 软件命令参考手册 1
第一部分 软件开发命令 1
引论 1
EXAMPLE(CP) 1
ADB(CP) 1
ADMIN(CP) 7
AR(CP) 10
AS(CP) 11
CB(CP) 12
CC(CP) 12
CDC(CP) 16
COMB(CP) 17
CONFIG(CP) 18
CPP(CP) 21
CREF(CP) 23
CSH(CP) 24
CTAGS(CP) 39
DELTA(CP) 39
DOSLD(CP) 41
GET(CP) 42
GETS(CP) 46
HDR(CP) 46
HELP(CP) 47
LD(CP) 48
LEX(CP) 49
LINT(CP) 51
LORDER(CP) 52
M4(CP) 52
MAKE(CP) 55
MKSTER(CP) 59
NM(CP) 60
PROF(CP) 61
PRS(CP) 62
RANLIB(CP) 63
RATFOR(CP) 64
REGCMP(CP) 65
RMDEL(CP) 65
SACT(CP) 66
SCCSDIFF(CP) 66
SIZE(CP) 67
SPLINE(CP) 67
STACKUSE(CP) 68
STRINGS(CP) 69
STRIP(CP) 69
TIME(CP) 70
TSORT(CP) 70
UNGET(CP) 70
VAL(CP) 71
XREF(CP) 72
XSTR(CP) 72
YACC(CP) 73
第二部分 系统调用和子程序 75
引论 75
A64L(S) 79
ABORT(S) 80
ABS(S) 80
ACCESS(S) 81
ACCT(S) 81
ALARM(S) 82
ASSERT(S) 83
ATOF(S) 83
BESSEL(S) 84
BSEARCH(S) 84
CHDIR(S) 85
CHMOD(S) 85
CHOWN(S) 86
CHROOT(S) 87
CHSIZE(S) 87
CLOSE(S) 88
CONV(S) 88
CREAT(S) 89
CREATSEM(S) 90
CTERMID(S) 91
CTIME(S) 92
CTYPE(S) 93
CURSES(S) 94
CURSERID(S) 100
DBM(S) 101
DEFOPEN(S) 102
DUP(S) 103
ECVT(S) 104
END(S) 104
EXEC(S) 105
EXIT(S) 107
EXP(S) 108
FCLOSE(S) 109
FCNTL(S) 109
FERROR(S) 110
FLOOR(S) 111
FOPEN(S) 111
FORK(S) 112
FREAD(S) 113
FREXP(S) 113
FSEEK(S) 114
GAMMA(S) 114
GETC(S) 115
GETCWD(S) 116
GETENV(S) 116
GETGRENT(S) 116
GETLOGIN(S) 117
GETOPT(S) 118
GETPASS(S) 119
GETPID(S) 120
GETPW(S) 120
GETPWENT(S) 121
GETS(S) 121
GETUID(S) 122
HYPOT(S) 122
IOCTL(S) 123
KILL(S) 123
L3TOL(S) 124
LINK(S) 124
LOCK(S) 125
LOCKF(S) 125
LOCKING(S) 126
LOGNAME(S) 128
LSEARCH(S) 129
LSEEK(S) 129
MALLOC(S) 130
MKNOD(S) 131
MKTEMP(S) 132
MONITOR(S) 132
MOUNT(S) 133
NAP(S) 134
NICE(S) 134
NLIST(S) 135
OPEN(S) 135
OPENSEM(S) 137
PAUSE(S) 138
PERROR(S) 138
PIPE(S) 138
PLOCK(S) 139
POPEN(S) 140
PRINTF(S) 140
PROFIL(S) 142
PTRACE(S) 143
PUTC(S) 145
PUTPWENT(S) 146
PUTS(S) 146
QSORT(S) 147
RAND(S) 147
RDCHK(S) 147
READ(S) 148
REGEX(S) 149
REGEXP(S) 151
SBRK(S) 154
SCANF(S) 154
SDENTER(S) 156
SDGET(S) 157
SDGETV(S) 158
SETBUF(S) 159
SETJMP(S) 159
SETPGRP(S) 160
SETUID(S) 160
SHUTDN(S) 161
SIGNAL(S) 161
SIGSEM(S) 164
SINH(S) 165
SLEEP(S) 165
SSIGNAL(S) 166
STAT(S) 166
STDIO(S) 168
STIME(S) 168
STRING(S) 169
SWAB(S) 169
SYNC(S) 170
SYSTEM(S) 170
TERMCAP(S) 170
TIME(S) 172
TIMES(S) 173
TMPFILE(S) 174
TMPNAM(S) 174
TRIG(S) 175
TTYNAME(S) 175
ULIMIT(S) 176
UMASK(S) 177
UMOUNT(S) 177
UNAME(S) 177
UNGETC(S) 178
UNLINK(S) 179
USTAT(S) 179
UTIME(S) 180
WAIT(S) 181
WAITSEM(S) 182
WRITE(S) 183
附录A 系统调用和库函数交叉参考 185
系统调用 185
扩充的系统调用 185
库子程序 185
标准C库-libc 186
标准数学库libm 187
省缺lex库-libl 187
省缺yacc 库-liby 187
终端能力库-libtermcap 187
屏幕操纵库-libcurses 187
数据库管理库-libdbm 187
第二册 软件开发指南 189
第一章 引论 189
1.1 概述 189
1.2 建立C语言程序 189
1.3 建立其它程序 190
1.4 库的建立和维护 190
1.5 程序源文件的维护 190
1.6 用shell命令建立程序 191
第二章 CC:C编译程序 192
2.1 引言 192
2.2 调用C编译程序 192
2.3 由C源文件建立程序 192
2.3.1 编译一个C源文件 192
2.3.2 编译若干个源文件 193
2.3.3 输出文件命名 194
2.4 建立大、中、小型程序 194
2.4.1 -Ms选择项 195
2.4.2 -Ms和-i选择项 195
2.4.3 -Mm选择项 195
2.4.4 -Ml选择项 195
2.4.5 建立小型程序 195
2.4.6 建立纯正文的小型程序 195
2.4.7 建立中型程序 196
2.4.8 建立大型程序 196
2.5 使用目标文件和库 196
2.5.1 建立目标文件 196
2.5.2 由目标文件建立程序 197
2.5.3 程序与库中函数的连接 197
2.6 建立较小较快的程序 197
2.6.1 建立优化的目标程序 198
2.6.2 删除符号表 198
2.6.3 从程序中删去栈检测 198
2.7 准备调试用程序 199
2.7.1 产生汇编语言清单 199
2.7.2 程序的直方图统计 190
2.8 控制C预处理程序 199
2.8.1 定义宏 200
2.8.2 定义包含目录 200
2.8.3 忽略缺省包含目录 200
2.8.4 保存预处理过的源文件 201
2.9 错误信息 201
2.9.1 C编译程序信息 201
2.9.2 设置警告的级别 201
2.10 使用高级选择项 202
2.10.1 由汇编语言源文件建立程序 202
2.10.2 使用关键字near和far 202
2.10.3 设置栈的大小 208
2.10.4 使用模块、段和组 208
2.10.5 建立DOS程序 204
2.11 编译程序小结 204
2.11.1 cc选择项 204
2.11.2 存贮模式 205
2.11.3 指针和整数的大小 206
2.11.4 段名和模块名 206
第三章 XENIX到DOS:交叉开发系统 207
3.1 引言 207
3.2 建立源文件 207
3.3 编译DOS源文件 208
3.4 使用汇编语言源文件 208
3.5 建立连接目标文件 208
3.6 DOS程序的运行和调试 209
3.7 系统间程序的传送 209
3.8 建立DOS库 209
第四章 lint程序——C程序检查器 210
4.1 引言 210
4.2 调用lint 210
4.3 检查无用的变量和函数 211
4.4 检查局部变量 211
4.5 检查不可到达语句 219
4.6 检查无限循环 212
4.7 检查函数返回值 218
4.8 检查无用的返回值 218
4.9 类型检查 218
4.10 检查类型强制转换 214
4.11 检查不可移植字符的使用 214
4.12 检查long到int的赋值 214
4.13 检查奇怪的结构 215
4.14 检查老的C文法的使用 215
4.15 检查指针排列 216
4.16 检查表达式计值顺序 216
4.17 嵌入伪指令 217
4.18 检查库相容性 217
第五章 程序的维护程序:make 219
5.1 引言 219
5.2 建立makefile文件 219
5.3 调用make 220
5.4 使用伪目标名 221
5.5 使用宏 222
6.6 使用Shell环境变量 224
5.7 使用内部规则 224
5.8 改变内部规则 225
5.9 使用库 226
5.10 故障查找 227
5.11 使用make:一个例子 228
第六章 SCCS:源代码控制系统 230
6.1 引言 230
6.2 基本信息 230
6.2.1 文件和目录 230
6.2.2 Delta和SID 230
6.2.3 SCCS工作文件 231
6.2.4 SCCS命令参数 232
6.2.5 文件管理者 232
6.3 建立和使用S文件 232
6.3.1 建立S文件 232
6.3.2 为读入恢复文件 238
6.3.3 为编辑恢复文件 233
6.3.4 保持文件的新版本 234
6.3.5 恢复某一特定版本 235
6.3.6 改变文件的发行号 235
6.3.7 建立分版本 236
6.3.8 恢复分版本 236
6.3.9 恢复最新版本 236
6.3.10 显示一个版本 236
6.3.11 保存新版本的拷贝 237
6.3.12 显示帮助信息 237
6.4 使用标识关键字 237
6.4.1 往文件中插入关键字 237
6.4.2 对关键字赋值 238
0.4.3 强置关键字 238
6.5 使用S文件标志 238
6.5.1 设置S文件标志 239
6.5.2 使用i标志 239
6.5.3 使用d标志 239
6.5.4 换用V标志 239
6.5.5 删去S文件标志 239
6.6 修改S文件信息 239
6.6.1 加入注释 240
6.6.2 改变注释 240
6.6.3 加入修改请求 240
6.6.4 改变修改请求 241
6.6.5 加入描述正文 241
6.7 打印S文件 241
6.7.1 使用数据说明 241
6.7.2 打印特定版本 242
6.7.3 打印较新的和较早的版本 242
6.8 由若干用户编辑 242
6.8.1 编辑不同版本 242
6.8.2 编辑一个版本 242
6.8.3 保存一特定版本 243
6.9 保护S文件 243
6.9.1 向用户表中加入一个用户 243
6.9.2 从用户表中删去一个用户 244
6.9.3 设置底层标志 244
6.9.4 设置顶层标志 244
6.9.5 对一版本加锁 244
6.10 订正SCCS文件 244
6.10.1 检查S文件 244
6.10.2 编辑S文件 245
6.10.3 改变S文件的校验和 245
6.10.4 为编辑重新产生G文件 245
6.10.5 恢复受损的P文件 245
6.11 使用其它命令选择项 245
6.11.1 用SCCS命令获取帮助 245
6.11.2 用标准输入建立文件 246
6.11.3 从特定发行号开始 248
6.11.4 向第一版中加入注释 246
6.11.5 禁止正常输出 246
6.11.6 包含和排斥Delta 246
6.11.7 列出版本的Delta 249
6.11.8 映射行到Delta 249
6.11.9 行命名 249
6.11.10 显示差异表 249
6.11.11 显示文件信息 248
6.11.12 删去Delta 248
6.11.13 对串进行搜索 248
6.11.14 比较SCCS文件 248
第七章 adb程序调试器 250
7.1 引言 250
7.2 启停adb 250
7.2.1 用程序文件启动 250
7.2.2 用内存映象文件启动 250
7.3 用写选择项启动 251
7.4 用提示选择项启动 251
7.5 退出adb 251
7.6 显示指令和数据 252
7.6.1 形成地址 252
7.6.2 形成表达式 252
7.6.2.1 十、八、十六进制整数 252
7.6.2.2 符号 252
7.6.2.3 adb中的变量 253
7.6.2.4 当前地址 253
7.6.2.5 寄存器名 254
7.6.2.6 运算符 254
7.6.3 选择数据格式 255
7.7 用等于命令 256
7.7.1 使用(?)命令和反斜线命令 258
7.7.2 一个例子:简单格式化 257
7.8 调试程序的执行 258
7.9 运行一程序 258
7.9.1 设置断点 258
7.9.2 显示断点 259
7.9.3 继续执行 259
7.9.4 用Interrupt和Quit停止程序 259
7.9.5 单步执行程序 260
7.9.6 抹去一程序 260
7.10 删去断点 260
7.10.1 显示C语言栈回溯踪迹 260
7.10.2 显示CPU寄存器 260
7.10.3 显示外部变量 261
7.10.4 一个例子:跟踪多个函数 261
7.11 使用adb内存映象 264
7.11.1 显示内存映象 264
7.11.2 改变内存映象 265
7.11.3 建立新的映象条目 265
7.12 验证地址 266
7.13 其它特点 266
7.13.1 在一行中组合命令 266
7.13.2 建立adb原本文件 266
7.13.3 设置输出宽度 267
7.13.4 设置最大偏移量 267
7.14 设置缺省输入格式 267
7.15 使用XENIX命令 268
7.16 计算数值和显示正文 268
7.17 一个例子:目录和I节点 268
7.18 修补二进制文件 269
7.19 在文件中确定值的位置 270
7.20 写文件 270
7.21 修改内存 270
第八章 lex程序:词法分析器 271
8.1 引言 271
8.2 lex源格式 272
8.3 lex正则表达式 278
8.4 调用lex 278
8.5 说明字符类 274
8.6 说明一任意字符 274
8.7 说明可选表达式 274
8.8 说明重复表达式 274
8.9 说明选择和分组 275
8.10 说明上下文相关性 275
8.11 说明表达式重复 275
8.12 说明定义 276
813 说明动作 276
8.14 处理模糊源规则 278
8.15 说明左上下文相关性 280
8.16 说明源定义 282
8.17 程序lex和yacc 283
8.18.说明字符集 286
8.19 源格式 286
第九章 yacc程序产生器:编译程序的编译程序 289
9.1 引言 289
9.2 规范说明 291
9.3 动作 292
9.4 词法分析 294
9.5 语法分析程序的工作过程 295
9.6 二义性和冲突 298
9.7 优先级 301
9.8 出错处理 303
9.9 yacc的环境 305
9.10 准备规范说明 306
9.11 输入风格 306
9.12 左递归 306
9.13 词法上的标注 307
9.14 处理保留字 307
9.15 在动作中模拟出错处理和接收 308
9.16 在封闭规则中访问值 308
9.17 对任意值类型的支持 308
9.18 一个小型台式计算器 310
9.19 yacc的输入语法 310
9.20 一个高级例子 312
9.21 早先的特性 316
第十章 C shell 318
10.1 引言 318
10.2 调用C shell 318
10.3 使用shell变量 319
10.4 使用C shell历史列表 320
10.5 使用别名 322
10.6 改向输入和输出 323
10.7 建立后台和前台作业 323
10.8 使用内部命令 324
10.9 建立命令原本 325
10.10 使用argv变量 325
10.11 替代shell变量 325
10.12 使用表达式 327
10.13 使用C shell:一个实例原本 327
10.14 使用其它控制结构 329
10.15 提供命令的输入 330
10.16 捕捉中断 330
10.17 使用其它特性 331
10.18 在终端上启动一个循环 331
10.19 使用带有参数的花括号 332
10.20 替换命令 332
10.21 特殊字符 332
10.21.1 句法元字符 332
10.21.2 文件名元字符 882
10.21.3 引用元字符 333
10.21.4 输入/输出元字符 333
10.21.5 扩展/替换元字符 333
10.21.6 其它元字符 333
附录A C语言的可移植性 334
A.1 引言 334
A.2 程序的可移植性 334
A.3 机器硬件 335
A.3.1 字节长度 335
A.3.2 字长 335
A.3.3 存贮器排列 335
A.3.4 字中的字节顺序 336
A.3.5 位段 336
A.3.6 指针 337
A.3.7 地址空间 337
A.3.8 字符集 337
A.4 编译程序的差异 338
A.4.1 有符号/无符号字符,符号扩展 338
A.4.1 移位操作 338
A.4.3 标识符长度 338
A.4.4 寄存器变量 338
A.4.5 类型转换 889
A.4.6 带有可变个参数的函数 339
A.4.7 副作用,计值顺序 340
A.5 程序环境差异 341
A.6 数据的可移植性 341
A.7 lint C程序检查器 342
A.8 字节顺序小结 342
附录B m4宏处理程序 343
B.1 引言 343
B.2 调用m4 343
B.3 定义宏 343
B.4 加引号 844
B.5 使用参数 345
B.6 使用内部算术运算 346
B.7 文件操作 347
B.8 使用系统命令 347
B.9 使用条件 347
B.10 使用串 348
B.11 打印 349
附录C XENIX设备驱动程序指南 350
C.1 引言 350
C.2 预备知识 350
C.3 字符设备 352
C.4 块设备 358
C.3 配置与安装 354
C.6 警告 355
C.7 行式打印机驱动程序实例 355
C.7.1 lpopen() 356
C.7.2 lpclose() 356
C.7.3 lpwrite() 356
C.7.4 lpstart() 356
C.7.5 lpintr() 356
C.8 终端驱动程序实例 358
C.8.1 tdopen() 359
C.8.2 tdclose() 359
C.8.3 tdread()tdwrite() 859
C.8.4 tdparam() 359
C.8.5 tmodem() 360
C.8.6 tdintr() 360
C.8.7 tdxint() 360
C.8.8 tdrint() 360
C.8.9 tdmint() 360
C.8.10 tdioctl() 360
C.8.11 tdproc() 360
C.9 磁盘驱动程序实例 369
C.9.1 hdstrategy 370
C.9.2 hdstart() 370
C.9.3 hdintr() 370
C.9.4 hdread() 370
C.9.5 hdwrite() 370
附录D 连接程序错误信息 376