第一章 引言 1
1.1 使用C语言库函数 1
1.2 符号约定 1
目录 1
2.1.2 专用名 2
2.2 使用命令行参数 2
2.1.3 专用宏 2
2.1.1 为I/O函数做准备 2
2.1 引言 2
第二章 使用标准I/O函数 2
2.3 使用标准文件 3
2.3.1 从标准输入读 4
2.3.2 向标准输出写 5
2.3.3 改向标准输入 7
2.3.4 改向标准输出 7
2.3.5 用管道线连接标准输入和标准输出 7
2.3.6 程序实例 7
2.4.1 使用文件指针 8
2.4 使用与字符流有关的函数 8
2.4.2 打开文件 9
2.4.3 读单个字符 9
2.4.4 从文件中读一个字符串 10
2.4.5 从文件中读记录 10
2.4.6 从文件中读格式化数据 11
2.4.7 写单个字符 11
2.4.8 向文件中写一个字符串 11
2.4.10 将记录写到文件中 12
2.4.9 写格式化输出 12
2.4.11 测试文件尾 13
2.4.12 测试文件错误 13
2.4.13 关闭文件 13
2.4.14 程序实例 14
2.5 使用更多的与字符流有关的函数 15
2.5.1 使用带缓冲的输入和输出 15
2.5.2 重新打开文件 15
2.5.4 把一个字符放回缓冲区 16
2.5.3 设置缓冲区 16
2.5.5 刷新文件缓冲区 17
2.6 使用低级函数 17
2.6.1 使用文件描述字 17
2.6.2 打开文件 17
2.6.3 从文件中读字节 18
2.6.4 向文件中写字节 18
2.6.5 关闭一个文件 19
2.6.6 程序实例 19
3.3.11 输入 20
2.6.7 使用随机存取I/O 20
2.6.8 移动字符指针 21
2.6.9 在字符流中移动字符指针 21
2.6.10 重卷文件 22
2.6.11 获取当前字符位置 22
第三章 屏幕处理 23
3.1 引言 23
3.1.1 屏幕处理概观 23
3.2.1 命名规则 24
3.1.2 使用库函数 24
3.2 屏幕更新 24
3.2.2 术语 25
3.3 准备屏幕 26
3.3.1 初始化屏幕 26
3.3.2 开始 26
3.3.3 使用终端特性和类型 26
3.3.4 Termcap中的功能 27
3.3.5 使用缺省终端方式 28
3.3.6 使用缺省密口标志 28
3.3.7 使用缺省终端大小 28
3.3.8 结束屏幕处理 28
3.3.9 怎样使用屏幕软件包 29
3.3.10 输出 29
3.4.4 印出字符串、字符和数 30
3.4.3 加一个字符串 30
3.4.1 函数 30
3.4 使用标准屏幕 30
3.4.5 从键盘读一个字符 31
3.4.6 从键盘读一个字符串 31
3.4.7 读字符串、字符和数 31
3.4.8 移动当前位置 32
3.4.9 插入一个字符 32
3.4.10 插入一行 32
3.4.11 删除一个字符 33
3.4.12 删除一行 33
3.4.13 清屏幕 33
3.4.14 清屏幕的一部分 34
3.4.15 由标准屏幕更新 34
3.5 创建并使用窗口 34
3.5.1 创建一窗口 34
3.5.3 附加并在窗口中印出 35
3.5.2 创建一子窗口 35
3.5.4 读取并扫描输入 36
3.5.5 在窗口内移动当前位置 37
3.5.6 插入字符 37
3.5.7 删除字符和行 38
3.5.8 清屏幕 38
3.5.10 窗口的覆盖 39
3.4.2 加一个字符 39
3.5.9 由一窗口更新 39
3.5.11 复写屏幕 40
3.5.12 移动窗口 40
3.5.13 由窗口读一字符 40
3.5.14 修饰窗口 41
3.5.15 删除一窗口 41
3.6 使用其它的窗口函数 41
3.6.1 画一个盒子 41
3.6.2 显示黑体字符 42
3.6.3 恢复正常字符 42
3.6.4 获取当前位置 42
3.7 窗口结构 43
3.6.5 置窗口标志 43
3.6.6 滚动窗口 43
3.7.1 例子 44
3.7.2 屏幕更新 44
3.7.3 Twinkle 44
3.8 Life 46
3.8.1 移动优化 49
3.8.2 Twinkle 49
3.9 用动作组合成移动 50
3.10 控制终端 50
3.10.1 终端方式 50
3.10.2 设置终端方式 50
3.10.3 清终端方式 51
3.10.4 移动终端光标 51
3.10.7 保存及恢复终端方式 52
3.10.9 由setterm()设置的变量 52
3.10.8 置终端类型 52
3.10.5 获取终端方式 52
3.10.6 用gettmode()设置变量 52
3.10.10 读终端的名字 53
第四章 字符和字符串处理 54
4.1 引言 54
4.2 使用字符函数 54
4.2.1 测试一个ASCII字符 54
4.2.2 转换成ASCII字符 54
4.3.2 测试一个控制字符 55
4.3 测试字母数字 55
4.3.1 测试一个字母 55
4.3.3 测试一个十进制数字 56
4.3.4 测试一个十六进制数字 56
4.3.5 测试一个可打印字符 56
4.3.6 测试一个标点 56
4.3.7 测试一个空白格字符 56
4.3.8 测试一个字母的大小写 56
4.4.1 连接字符串 57
4.3.9 字母大小写的转换 57
4.4 使用字符串函数 57
4.4.2 比较字符串 58
4.4.3 拷贝字符串 58
4.4.4 获取一个字符串的长度 58
4.4.5 把字符连接到字符串上 59
4.4.6 比较字符串中的字符 59
4.4.7 把字符拷贝到字符串上 59
4.4.9 向一个字符串中的写值 60
第五章 使用进程控制…………………………一 62
5.1 引言 62
5.2 使用进程 62
5.3 调用一个程序 62
5.4 停止一个程序 63
5.5 开始一个新程序 63
5.6 通过shell执行一个程序 65
5.7 复制一个进程 65
5.10 程序实例 66
5.9 继承打开的文件 66
5.8 等待一个进程 66
第六章 创建并使用管道 68
6.1 引言 68
6.2 给新进程打开一个管道 68
6.3 读写一个管道 68
4.4.8 从一个字符串中读值 69
6.4 关闭一个管道 69
6.5 打开一个低级管道 69
6.7 关闭一个低级管道 70
6.6 读写一个低级管道 70
6.8 程序实例 71
第七章 使用信号 73
7.1 引言 73
7.2 使用信号函数 73
7.2.1 使一个信号无效 73
7.2.2 恢复一个信号的缺省动作 74
7.2.3 捕捉一个信号 75
7.2.5 程序实例 76
7.2.4 恢复一个信号 76
7.3.1 延迟一个信号的动作 77
7.3.2 在系统函数中使用延迟信号 77
7.3 用信号控制执行 77
7.3.3 在交互式程序中使用信号 78
7.4 在多进程中使用信号 79
7.4.1 保护后台进程 79
7.4.2 保护父进程 79
第八章 使用系统资源 81
8.1 引言 81
8.2 分配空间 81
8.2.1 为一变量分配空间 81
8.2.2 为一个数组分配空间 82
8.2.3 重新分配空间 82
8.3.1 为封锁文件做准备 83
8.3.2 封锁一个文件 83
8.3 封锁文件 83
8.2.4 释放不用的空间 83
8.3.3 程序实例 84
8.4 使用信号量 84
8.4.1 创建一个信号量 85
8.4.2 打开一个信号量 85
8.4.3 请求对一个信号量的控制 86
8.4.4 检查信号量的状态 86
8.4.6 程序实例 87
8.4.5 放弃对一信号量的控制 87
8.5 使用共享数据 88
8.5.1 建立一个共享数据段 88
8.5.2 附加一个共享数据段 89
8.5.3 进入一个共享数据段 90
8.5.4 离开一个共享数据段 90
8.5.5 获取当前版本号 91
8.5.6 等待一个版本号 91
8.5.7 释放一个共享数据段 91
9.2 使用标准出错文件 93
9.1 引言 93
9.3 使用errno变量 93
第九章 错误处理 93
9.4 印出出错信息 94
9.5 使用出错信号 94
9.6 遇到系统错误 95
A.2 C调用序列 96
A.1 引言 96
A.3 进入一个汇编例程 96
附录A 汇编语言接口 96
A.5 退出一个子程序 97
A.6 程序实例 97
A.4 返回值 97
8.5.8 程序实例 98
B.1 引言 99
B.2 可执行文件格式 99
B.3 修正的系统调用 99
B.4 版本7的扩充部分 99
附录B XENIX系统调用 99
B.5 对ioctl函数的修改 100
B.6 路径名解释 100
B.7 使用mount和chown函数 100
B.8 专用块格式 100
B.9 分离版本库 100
C.1 引言 101
C.2 公用include文件 101
附录C XENIX和DOS的公用库 101
C.3 公用子程序间的差异 102
abort 102
access 102
chdir 102
chmod 102
chsize 103
creat 103
exec 103
exit 103
fopen,fdopen,freopen 103
open 104
mktemp 104
iseek 104
isatty 104
fwrite 104
fseek 104
fread 104
getpid 104
read 105
sbrk 105
signal 105
stat,fstat 105
system 106
umask 106
unlink 106
write 106
C.4 定义中的差异 106
filelength 107
fputchar 107
tlushall 107
eof 107
fgetchar 107
fcloseall 107
C.5 DOS专用子程序 107
itoa,ltoa和ultoa 108
labs 108
mkdir 108
rmdir 108
spawn 109
strlwr和strupr 110
strset和strnset 110
strrev 110
tell 111