UNIX程序设计教程

UNIX程序设计教程
作 者: 赵克佳
出版社: 清华大学出版社
丛编项: Linux/UNIX开发与应用系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: UNIX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  赵克佳(女)国防科学技术大学计算机研究所研究员,政府特殊津贴享受者。从事计算机科研工作20多年,主要研究方向为程序设计语言及其编译,并行处理以及计算机系统软件。先后参与我国多项巨型机系统软件的研制工程曾获部委级科技进步一等奖2项,二等奖4项,参与编写了以下教材和专著:《超级计算机中的依赖关系分析》译著湖南科技出版社1991年、《程序设计语言编译原理》编著 国防工业出版社2000年、《并行编译方法著 国防工业出版社2000年。沈志宇 国防科学技术大学计算机学院教授。从事计算机教学与科研工作20多年,主要研究方向为并行处理以及计算机系统软件。先后参与我国多项巨型机系统软件的研制工程曾获国家科技进步一等奖1项,部委级科技进步一等奖1项,部委级科技进步二等奖4项,主编了以下教材和专著:《超级计算中的依赖关系分析》译著 湖南科技出版社 1991年、《并行程序设计》 编著 国防科大出版社1997年、《并行编译方法》 著国防工业出版社2000年。

内容简介

本书是UNIX系统程序设计方面较全面的著作,以最新UNIX98程序设计界面为主导,兼顾V UNIX和BSD UNIX的特点,系统地讲述了UNIX程序设计API的各种函数及其编程方法。内容包括:UNIX导论,标准输入输出,低级输入输出,文件与目录,进程环境与控制,日期和时间,信号处理,终端I/O,高级I/O,进程之间的通信,套接字与网络通信。本书在介绍UNIX API各种函数的同时,深入浅出地讲述了它们所隐含的操作系统基本原理,书中给出的大量程序实例有助于读者深入、透乇地掌握这些函数的用途、使用方法以及程序设计技巧。本书内容丰富,叙述系统、全面,适用于大专院校计算机和相关专业的教师高年级学生、研究生以及计算机软件科研和工程技术人员,也适合作为自学人员的参考书,同时还可以作为一本UNIX实用编程手册供计算机程序员查询。

图书目录

第1章 UNIX导论

1. 1 UNIX简史

1. 1. 1 UNIX的诞生

1. 1. 2 UNIX的早期发展

1. 1. 3 BSD UNIX

1. 1. 4 系统V UNIX

1. 1. 5 UNIX的商业化

1. 2 标准

1. 2. 1 SVID

1. 2. 2 POSIX

1. 2. 3 X/0pen

1. 2. 4 C标准

1. 3 UNIX基本概念

1. 3. 1 程序和进程

1. 3. 2 内核

1. 3. 3 shell

1. 3. 4 特权用户

1. 3. 5 系统调用与库函数

1. 4 C库

1. 4. 1 头文件

1. 4. 2 保留字

1. 4. 3 特征测试宏

1. 5 系统信息

1. 5. 1 机器标识

1. 5. 2 硬件/软件类型识别

1. 6 系统能力限制

1. 6. 1 一般能力限制值

1. 6. 2 系统和文件特征选项

1. 6. 3 sysconf, pathconf和fpathconf函数

1. 7 错误处理

第2章 标准输入输出

2. 1 输入/输出基本概念

2. 2 流和FILE对象

2. 3 打开和关闭流

2. 4 读和写流

2. 4. 1 字符I/0

2. 4. 2 行I/0

2. 4. 3 读回退

2. 4. 4 块I/0

2. 5 文件定位

2. 6 文件结束和错误

2. 7 流缓冲

2. 8 格式I/0

2. 8. 1 格式输出

2. 8. 2 格式输入

2. 9 临时文件

第3章 低级输入/输出

3. 1 文件描述字

3. 2 0pen. creat和close函数

3. 3 文件输入输出

3. 3. 1 read函数

3. 3. 2 write函数

3. 4 设置描述字的文件位置

3. 5 dup和duP2函数

3. 6 fdoPen和fileno

3. 7 文件控制函数fcntl

3. 7. 1 重复文件描述字

3. 7. 2 文件描述字标签

3. 7. 3 文件状态标签

3. 8 非阻塞I/0

第4章 文件与目录

4. 1 文件

4. 1. 1 stat. fstat. lstat函数

4. 2 文件类型

4. 2. 1 普通文件

4. 2. 2 目录

4. 2. 3 链接与link函数

4. 2. 4 符号链接与symlink和readlink函数

4. 2. 5 特别文件

4. 2. 6 测试文件的类型

4. 3 文件的用户和用户组

4. 3. 1 chown. fchown和lchown函数

4. 4 文件方式

4. 4. 1 文件访问权限

4. 4. 2 调整用户ID和调整组ID

4. 4. 3 Sticky位

4. 4. 4 文件方式位小结

4. 5 确定和改变文件方式

4. 5. 1 umask函数

4. 5. 2 chmod和fchmod函数

4. 5. 3 access函数

4. 6 文件大小

4. 6. 1 截断文件

4. 7 文件时间

4. 7. 1 utime和utimes函数

4. 8 文件的删除与换名

4. 8. 1 删除文件和目录

4. 8. 2 文件改名

4. 9 目录操作

4. 9. 1 工作目录

4. 9. 2 创建目录

4. 9. 3 读目录流

4. 9. 4 对目录流的随机访问

第5章 UNIX区进程环境

5. 1 main函数

5. 2 命令行参数

5. 2. 1 命令行参数的语法约定

5. 2. 2 扫描命令行参数中的选项

5. 3 环境变量

5. 3. 1 环境表

5. 3. 2 访问环境

5. 4 终止进程

5. 4. 1 出口状态

5. 4. 2 终止前的清理

5. 4. 3 流产程序

5. 5 存储分配

5. 5. 1 进程的地址空间

5. 5. 2 简单存储分配

5. 5. 3 释放分配的存储单大

5. 5. 4 其他存储分配函数

5. 6 setjmp和longjmp函数

5. 7 进程资源

5. 7. 1 查看与设置资源限制

5. 7. 2 资源使用统计

5. 7. 3 进程优先权

5. 8 用户信息

5. 8. 1 用户名

5. 8. 2 用户数据基

5. 8. 3 组数据基第6章 进程控制

6. 1 进程创建

6. 2 执行一个新程序

6. 3 等待进程完成

6. 4 进程终止与僵死进程

6. 5 system函数

6. 6 进程组

6. 7 会晤期

6. 8 控制终端

6. 9 作业控制

6. 9. 1 作业控制的概念

6. 9. 2 实现作业控制的shell

6. 9. 3 示例shell中用到的数据结构

6. 9. 4 shell的初始化

6. 9. 5 发送作业

6. 9. 6 放置作业于前台或后台

6. 9. 7 暂停的和终止的作业

6. 9. 8 继续被暂停的作业

6. 10 进程的用户身份

6. 10. 1 调整进程的身份

第7章 日期与时间

7. 1 处理机时间

7. 1. 1 c1ock函数

7. 1. 2 times函数

7. 2 定时与睡眠

7. 2. 1 设置定时器

7. 2. 2 睡眠

7. 3 日历时间

7. 3. 1 取系统时间

7. 3. 2 高分辨率时间函数

7. 3. 3 分解的日历时间

7. 3. 4 格式化日期与时间

7. 4 时区

7. 4. 1 用TZ环境变量指定时区

7. 4. 2 Tzset函数与相关的变量

第8章 信号处理

8. 1 信号概念

8. 2 UNIX信号

8. 2. 1 程序错误类信号

8. 2. 2 程序中止类信号

8. 2. 3 闹钟类信号

8. 2. 4 I/0类信号

8. 2. 5 作业控制类信号

8. 2. 6 操作错误类信号

8. 2. 7 其他信号

8. 2. 8 sys—siglist「」数组与Psignal函数

8. 3 指定和改变信号的动作

8. 3. 1 signal函数

8. 3. 2 进程初启时的信号动作

8. 3. 3 不可靠信号

8. 3. 4 sigaction函数

8. 4 信号句柄

8. 4. 1 正常返回的信号句柄

8. 4. 2 终止进程的句柄

8. 5 生成信号

8. 5. 1 raise函数

8. 5. 2 kill函数

8. 6 阻塞信号

8. 6. 1 信号集操作

8. 6. 2 信号屏蔽

8. 6. 3 检查悬挂信号

8. 7 等待信号

8. 7. 1 pause函数

8. 7. 2 sigsuspend函数

8. 8 使用分开的信号栈

8. 9 信号句柄编程技巧

8. 9. 1 句柄内非局部控制转移

8. 9. 2 可重入函数

8. 9. 3 紧相邻的多个信号

8. 9. 4 被信号中断了的系统调用

8. 9. 5 原子数据访问

8. 10 SA—SIGINF0标志

第9章 低级终端I/0

9. 1 需要改变终端设置的例子

9. 2 低级终端I/0基础

9. 2. 1 终端I/0的历史

9. 2. 2 终端硬件模式

9. 2. 3 异步串行通信

9. 2. 4 加工和非加工输入方式

9. 2. 5 输入输出队列

9. 2. 6 流控制

9. 3 POSIX. 1 GTI控制界面

9. 3. 1 temios数据结构

9. 3. 2 GTI控制函数

9. 4 终端属性标志

9. 4. 1 输入方式

9. 4. 2 输出方式

9. 4. 3 控制方式

9. 4. 4 局部方式

9. 4. 5 特殊字符

9. 4. 6 stty命令

9. 5 终端标识

9. 6 获取和设置终端属性

9. 7 加工方式输入

9. 8 非加工方式输入

9. 9 设置波特率

9. 10 行控制函数

9. 11 串行端口程序设计

第10章 高级I/0

10. 1 文件锁

10. 1. 1 fcntl文件锁操作

10. 1. 2 锁的请求. 释放和测试

10. 1. 3 文件锁与进程和文件的关系

10. 1. 4 死锁

10. 1. 5 建议锁与强制锁

10. 2 流

10. 2. 1 流概貌

10. 2. 2 流消息类型和优先级

10. 2. 3 访问流

10. 2. 4 流控制操作函数ioctl

10. 3 信号驱动的I/0

10. 4 多路转接I/0

10. 4. 1 select函数

10. 4. 2 poll函数

10. 5 异步I/0

10. 5. 1 异步I/0控制块

10. 5. 2 指定信号

10. 5. 3 异步I/0函数

10. 5. 4 异步I/0之例

10. 6 I/O方式小结

10. 7 readv和writev

10. 8 存储映射I/o

第11章 进程间通信

11. 1 管道

11. 1. 1 创建管道

11. 1. 2 父子进程间管道通信

11. 1. 3 连接标准输入和标准输出的管道

11. 1. 4 Popen和pclose函数

11. 1. 5 管道I/O的原子性

11. 2 FIFL特别文件

11. 2. 1 创建FIFO

11. 2. 2 FIFO操作

11. 2. 3 FIFO用于客户/服务通信

11. 3 系统V IPC

11. 3. 1 关键字和标识

11. 3. 2 ipc—perm结构

11. 3. 3 ipcs和ipcrm命令

11. 4 消息队列

11. 4. 1 初始化消息队列

11. 4. 2 控制消息队列

11. 4. 3 发送和接收消息

11. 5 信号量

11. 5. 1 信号量的初始化

11. 5. 2 信号量控制

11. 5. 3 信号量操作

11. 6 共享存储

11. 6. 1 共享存储段的访问和控制

11. 6. 2 共享存储段的连接和分离

第12章 套接字与网络通信

12. 1 套接字

12. 1. 1 套接字的域. 类型和协议

12. 1. 2 创建套接字

12. 1. 3 关闭套接字

12. 2 套接字地址

12. 2. 1 主机的IP地址

12. 2. 2 主机名

12. 2. 3 服务与端口号

12. 2. 4 套接字地址数据结构

12. 3 字节顺序

12. 4 协议数据库

12. 5 命名套接字

12. 6 套接字通信模式

12. 7 流套接字操作

12. 7. 1 请求连接

12. 7. 2 接收连接

12. 7. 3 多客户

12. 7. 4 getsockname和getpeername

12. 7. 5 send和recv

12. 8 套接字选项

12. 9 带外数据

12. 9. 1 TCP带外数据

12. 9. 2 带外数据的发送和接收

12. 9. 3 带外数据标志

12. 10 数据报套接字操作

12. 10. 1 sendto和recvfrom

12. 10. 2 数据报套接字客户/服务之例

12. 10. 3 使用connect

12. 11 超时处理

附录 函数索引