前言 1
第一章 SVR4导论 13
与标准兼容 14
编译器 16
BSD源码兼容包 19
第二章 实用子例程 22
字符串操作 22
内存块操作函数 42
操作字符类 46
动态内存分配 49
操作临时文件 54
分析命令行参数 57
其他函数 62
本章小结 65
第三章 低层I/O子例程 66
文件描述符 66
打开和关闭文件 67
输入和输出 70
重置读写偏移量 74
复制文件描述符 77
本章小结 78
第四章 标准I/O库 79
数据类型和常量 81
打开和关闭文件 81
基于字符的输入输出 83
基于行的输入输出 86
基于缓冲区的输入输出 88
格式化输入和输出 90
重置输入/输出的偏移量 102
重新分配文件指针 106
缓冲 106
stream的状态 108
文件指针和文件描述符 109
本章小结 109
文件系统基本概念 110
第五章 文件和目录 110
UNIX文件系统 111
获得文件属性 118
修改文件的属性 129
创建和删除文件及目录 135
与目录相关的特殊操作 137
本章小结 144
文件描述符的属性 145
第六章 文件的特殊操作 145
管理多个文件描述符 149
文件和记录上锁 160
内存映像文件 165
文件系统/dev/fd 172
其他函数 173
本章小结 176
第七章 日期时间操作 177
复杂的时间 177
获得当前的时间 179
获得本地时区 180
在UNIX时间格式和日常时间格式之间相互转换 182
格式化数据串 183
本章小结 190
第八章 用户和组 191
登录名 191
用户的ID号 193
组ID 195
口令文件 196
映像口令(shadow password)文件 199
组文件 202
文件utmp和wtmp 208
文件Lastlog 217
文件shells 220
编写set-user-id和set-group-id程序 221
本章小结 224
第九章 系统配置和资源限制 225
基本的系统信息 226
系统资源限制 230
进程的资源限制 236
资源利用信息 238
本章小结 241
第十章 信号 242
信号的基本概念 243
基本的信号处理 249
不可靠的信号 253
可靠的信号 255
信号和系统调用 260
使用信号进行“定时”处理 261
高级信号处理 270
将伯克利的信号处理函数移植到SVR4 283
本章小结 286
第十一章 进程 287
进程的基本概念 288
终止进程 294
执行一个程序 295
和进程相关的高级函数调用 298
输入输出重定向 314
作业控制 321
统计进程的执行时间 322
移植注意 323
本章小结 325
第十二章 终端 326
终端1/O的基本概念 327
和终端相关的函数 333
POSIX的终端控制 335
POSIX之前的终端控制 347
终端窗口的大小 354
本章小结 355
第十三章 进程间通信 356
管道 356
FIFO 366
UNIX的套接字 369
系统V的IPC函数 377
本章小结 391
第十四章 使用套接字进行网络编程 392
网络的基本概念 393
创建一个套接字 399
服务器端的函数 400
客户端的函数 402
示例程序 405
其他函数 410
本章小结 415
第十五章 使用TLI进行网络编程 417
结构体netbuf 418
网络选择 419
主机名-主机地址转换 424
TLI工具函数 427
传输终端点管理 429
无连接的服务 434
面向连接的服务 440
其他函数 454
在TLI中进行读写 457
本章小结 458
第十六章 其他子例程 460
当发生错误时退出 460
错误日志 461
搜索 466
排序 481
环境变量 483
口令 484
目录树 486
随机数 486
数据库管理 492
模式匹配 495
国际化 502
本章小结 507
附录一 ANSI C对C的改进 509
附录二 访问文件系统的数据结构 521
附录三 文件系统/proc 550
附录四 伪终端 562
附录五 在链路层访问网络 574