《UNIX系统第4版 程序员指南 系统服务和应用软件打包工具 Programmer's guide System services and application packaging tool》求取 ⇩

1.2 应用编程1

前言1

0.1 目的1

0.2 读者和所需的预备知识1

0.3 组织1

图2—3 终端I/O的系统调用 (11

图2—2 高级文件I/O的系统调用 (11

目录1

第一章 应用编程介绍1

1.1 引言1

1.4  UNIX系统环境支持的语言及其有关资料2

1.3 UNIX系统工具以及有关资料2

1.3.1 本指南中涉及的工具和未涉及的工具2

0.6 记号约定2

0.5 硬件/软件依赖性2

0.4 与C的关系2

0.8 示例信息3

0.7 命令索引3

1.4.1  C语言3

1.4.2 shell3

1.4.3 awk3

1.4.4 lex4

1.4.5 yacc4

1.4.6 m44

1.4.7  bc和dc5

1.4.8 curses5

1.4.9  FM LI5

1.4.10 ETI5

图和表7

图1—1 一个简单的ETI程序7

1.4.11 XWIN图形窗口系统7

1.4.12 OPEN LOOK图形用户界面7

2.1 引言9

2.2 系统调用9

第二章 UNIX系统环境中的应用编程9

图2—1 基本的文件I/O的系统调用10

2.2.3 高级的文件I/O10

2.2.2 基本的文件I/O10

2.2.1 出错处理10

2.2.5 进程11

2.2.4 终端I/O11

图2—4 进程的系统调用12

2.2.5.1 进程概述12

2.2.5.2 exec(2)13

图2—5 进程状态13

2.2.5.3 fork(2)14

图2—6 fork的例子14

2.2.7 高级的进程间通信15

2.2.6 基本的进程间通信15

图2—7 高级进程间通信的系统调用15

2.2.8 存储管理15

2.2.9 文件系统控制16

2.2.10 信号16

图2—8 存储管理的系统调用16

图2—9 文件系统控制的系统调用16

图2—10 信号的系统调用16

2.2.10.2 信号类型17

2.2.10.1 信号概述17

2.2.10.3 信号处理程序18

2.2.10.5 保护临界区19

2.2.10.4 发送信号19

2.2.11 杂类系统调用20

2.2.10.6 信号栈20

图2—11 杂类系统调用21

2.3.1 文件和记录加锁21

2.3 应用软件的开发21

2.3.1.1 何处能找到详细信息22

2.3.2 进程间通信22

2.3.3 进程调度23

2.3.3.1 何处能找到详细信息23

2.3.2.1 何处能找到详细信息23

2.3.4 符号连结24

2.3.6 数据合法性确认工具25

2.3.5.2 何处能找到详细信息25

2.3.5.1 存储映象界面25

2.3.5 存储管理25

2.3.4.1 何处能找到详细信息25

2.4.1 打包应用软件26

2.3.6.1 何处能找到详细信息26

2.4 软件包的开发和安装26

2.4.1.1 何处能找到详细信息27

2.4.2 修改sysadm界面27

2.4.2.1 何处能找到详细信息28

第三章 文件和记录的加锁29

3.1 引言29

3.2 术语29

3.3 文件保护30

3.3.1 为记录加锁打开一文件30

3.3.2 设置文件锁31

3.3.3 设置和取消记录锁33

3.3.4 获取加锁信息37

3.3.5 死锁处理39

3.4 选择咨询加锁或强制加锁39

3.4.2 记录加锁和未来的U NIX系统 本40

3.4.1 强制加锁使用注意事项40

4.1 引言41

第四章 进程间通信41

4.2.1 使用消息42

4.2 消息42

图4—1 ipc-perm数据结构44

4.2.2.1 使用msgget45

4.2.2 得到消息队列45

图4—2 操作权限代码46

4.2.2.2 实例程序47

图4—3 msgget系统调用实例48

4.2.3 控制消息队列49

4.2.3.1 使用msgctl49

4.2.3.2 实例程序50

图4—4 msgctl系统调用实例52

4.2.4 对消息的操作54

4.2.4.1 使用msgop54

4.2.4.2 实例程序56

8.7.2 安装参数 (159

图4—5 msgop系统调用实例59

4.3 信号量62

4.3.1 使用信号量64

4.3.2 得到信号量66

4.3.2.1 使用semget66

图4—6 操作权限代码67

4.3.2.2 实例程序68

图4—7 semget系统调用实例69

4.3.3.1 使用semctl71

4.3.3 控制信号量71

4.3.3.2 实例程序72

图4—8 semctl系统调用实例75

4.3.4 信号量上的操作79

4.3.4.1 使用semop80

4.3.4.2 实例程序81

图4—9 semop系统调用实例82

4.4 共享内存84

4.4.1 使用共享内存85

4.4.2 得到共享内存段87

4.4.2.1 使用shmget87

图4—10 操作权限代码88

4.4.2.2 实例程序89

图4—11 shmget系统调用实例90

4.4.3 控制共享内存91

4.4.3.1 使用shmctl92

4.4.3.2 实例程序92

图4—12 shmctl系统调用实例94

4.4.4 对共享内存的操作97

4.4.4.1 使用shmop97

4.4.4.2 实例程序98

图4—13 shmop系统调用实例100

第五章 进程调度程序103

5.1 引言103

5.2 进程调度程序概述104

图5—1 系统V4.0版的进程调度程序104

5.2.2 系统类调度105

5.2.1 分时类调度105

图5—2 进程优先级(程序员角度)106

5.2.3 实时类调度106

5.3 命令与函数调用106

5.3.1 priocnl命令108

5.3.2 priocnl系统调用111

5.3.2.1 PC-GETCID PC-GETCLINFO112

5.3.2.2 PC-GETPARMS PC-SETPARMS116

图5—3 PC-CETPARMS的返回值117

5.3.3 priocntlset系统调用120

5.4 与其他函数的相互作用123

5.4.1 核心进程123

5.4.2 fork,exec123

5.4.3 nice123

5.4.4 init123

5.5 性能123

5.5.1 进程状态转换124

图5—4 进程状态转换图124

5.5.2 软件延时125

5.5.3 用于实时U块的内存126

6.1 引言127

第六章 符号连结127

6.2 符号连结的使用128

6.2.1 符号连结的特征128

6.2.2 符号连结的创建129

6.2.2.1 语义规则和语法规则129

图6—1 符号连结文件树129

6.2.2.2 例子130

6.2.3 符号连结的删除131

6.2.4 符号连结的存取131

6.2.5 符号连结的拷贝131

6.2.6 符号连结的连结131

6.2.7 符号连结的改名132

6.2.8 归档命令132

6.2.9 文件属主和存取权限133

6.2.10 在RFS中使用符号连结133

图6—2 RFS中的符号连结例1134

图6—3 RFS中的符号连结例2135

第七章 存贮管理137

7.1 虚拟存贮系统概述137

7.1.1 虚存、地址空间和映射137

7.1.2 网络、异机种和一致性138

7.2 存贮管理界面138

7.2.1 创建和使用映射139

7.2.2 删除映射142

7.2.3 高速缓存控制142

7.3 地址空间的布局145

7.2.4 其他映射函数145

第八章 打包应用软件147

8.1 软件打包概述147

8.2 软件包的内容147

8.2.1 必要的成分147

8.2.2 可选的软件包信息文件148

图8—1 软件包的内容148

8.2.3 可选的安装脚本149

8.3 软件包的结构生命周期149

8.4 打包工具150

8.4.1 pkgmk命令150

8.4.3 pkgproto命令151

8.5 安装工具151

8.4.2 pkgtrans命令151

图8—2 样本pkginfo文件152

8.6.1 pkginfo文件152

8.6 软件包信息文件152

8.6.2.1 描述行153

8.6.2 prototype文件153

图8—3 样本#1prototype文件154

8.6.2.2 命令行154

图8—4 样本#2protoype文件155

图8—5 样本compver文件155

8.6.3 compver文件155

8.6.5 depend文件156

8.6.4 copyright文件156

图8—6 样本copyright文件156

图8—7 样本depend文件157

图8—8 样本space文件157

8.6.6 space文件157

8.6.7 pkgmap文件158

8.7 安装脚本158

8.7.1 脚本处理158

8.7.3 为脚本获取软件包信息160

8.7.4 脚本的退出码160

8.7.5 请求脚本160

8.7.5.1 请求脚本的命名约定161

8.7.6 类动作脚本161

8.7.5.2 请求脚本的使用规则161

图8—9 把参数存放到安装环境中161

8.7.6.1 类动作脚本的命名约定162

8.7.6.2 类动作脚本的使用规则162

8.7.6.3 类的安装162

8.7.6.4 类的删除163

8.7.7 特别系统类164

8.7.7.1 sed类脚本164

图8—10 sed脚本格式164

图8—11 awk脚本格式165

8.7.8 过程脚本165

8.7.7.2 awk类脚本165

8.7.7.3 build类脚本165

8.7.8.1 过程脚本的命名约定166

8.7.8.2 过程脚本的使 用规则166

8.8 打包的基本步骤166

8.9 指定软件包的缩写名168

8.10 定义软件包实例168

8.10.1 标识一个软件包实例168

8.10.2 在你的脚本中存取实例标识符169

8.11 编写安装脚本169

8.12 使软件包对象可重定位169

8.12.1 定义群体可重定位对象170

8.12.2 定义个别可重定位对象170

8.13 对象分类170

8.14 定义软件包的依赖性171

8.15 编写版权信息171

8.17 创建pkginfo文件172

8.18 创建prototype文件172

8.16 在安装机器上保留附加空间172

8.18.1.2 映射开发路径名到安装路径名上173

8.18.1.1 创建连接173

8.18.1.3 定义pkgadd创建的对象173

8.18.1 手工创建prototype文件173

8.18.2 用pkgproto创建文件174

8.18.2.1 创建一个基本的prototype文件174

8.18.1.4 使用命令行174

8.18.2.2 为对象指定类175

8.18.2.3 用pkgproto重新命名路径名175

8.19 把软件包分布在多个卷上176

8.20 用pkgmk创建软件包176

8.18.2.4 pkgproto和links176

8.20.2 帮助pkgmk确定软件包内容177

8.21 用pkgtrans创建软件包177

8.20.1 创建软件包实例177

8.21.1 创建数据流软件包178

8.21.2 转换软件包实例178

8.22 打包过程的快速引用179

9.1.1 工具介绍181

9.1 sysadm修改的概述181

9.1.1.1 edsysadm命令181

第九章 修改sysadm界面181

9.1.1.2 delsysadm命令182

9.1.1.3 数据合法性确认工具182

9.1.2 打包修改文件的介绍183

9.1.3 界面修改过程的概述183

9.2 设计你的界面修改184

9.2.1 决定是否你应该修改界面184

9.2.2 设计你的修改位置184

9.2.2.1 界面结构概貌184

9.2.2.2 设计你的管理结构185

9.2.3 命名你的界面修改186

9.2.3.1 如何命名你的修改186

9.2.3.2 界面命名的要求186

9.2.3.3 系统如何处理命名冲突186

9.4.1 条目求助文件187

9.3 编写管理操作187

9.4 编写求助消息187

9.4.1.2 默认标题格式188

9.4.1.1 菜单条目求助的消息格式188

9.4.1.3 字段条目求助的消息格式189

9.4.2 标题层次190

9.4.3 在FACE对象中建立条目求助190

图9—1 一个表格的项目求助文件191

9.4.4 条目求助文件的举例191

图9—2 多个表格的条目求助文件192

9.5 打包你的界面修改193

9.5.1 打包你的修改的基本步骤193

9.5.2 为一个菜单项建立或改变打包193

9.5.2.1 为一个菜单项建立打包193

9.5.2.2 为一个菜单项改变打包194

9.5.2.4 菜单定义表格195

9.5.2.3 联机测试你的菜单改变195

9.5.3 为一个任务项建立或改变打包196

9.5.3.1 为一个任务项建立打包196

9.5.3.2 为一个任务项改变打包197

9.5.3.3 任务定义表格198

9.6 准备你的软件包199

9.7 删除界面修改200

10.3 工具的特性201

10.2 工具的类型201

10.1 工具的介绍201

第十章 数据合法性确认工具201

10.3.2 数据合法性确认工具求助消息202

10.3.1 数据合法性确认工具提示符202

10.3.5 shell命令203

10.3.4 消息格式化203

10.3.3 数据合法性确认工具的出错消息203

图10—1 shell命令204

图10—2 直观工具205

10.3.6 直观工具205

附录A liber,一个图书馆系统207

附录B 命令手册页219

C.1 引言273

附录C 软件包安装实例分析273

C.2 实例#1273

C.2.1 技术273

C.2.2 方法273

C.2.3 样本文件274

图C—1 实例#1pkginfo文件274

图C—2 实例#1prototype文件275

图C—3 实例分析#1请求脚本276

C.3 实例#2277

C.3.1 技术277

C.3.2 方法277

图C—5 实例#2 pkginfo文件278

C.3.3 样本文件278

图C—4 实例#2prototype文件278

图C—6 实例#2 请求脚本279

图C—7 实例#2 postinstall脚本280

C.4 实例#3281

C.4.2 方法281

C.4.1 技术281

图C—8 实例#3 pkginfo文件282

图C—9 实例#3 prototype文件282

C.4.3 样本文件282

图C—10 实例#3 space文件283

图C—11 实例#3 安装类动作脚本(i·admin)283

图C—12 实例#删除类动作脚本(r·cfgdata)284

C.5 实例#4284

C.5.1 技术284

C.5.2 方法284

图C—13 实例#4 pkginfo文件285

图C—14 实例#4 copright文件285

C.5.3 样本文件285

图C—15 实例#4 compver文件286

C.6 实例#5a286

C.6.1 技术286

图C—16 实例#4 depend文件286

C.6.2 方法287

图C—17 实例#5a pkginfo文件288

图C—18 实例#5a prototype文件288

图C—19 实例#5a sed脚本(/sbin/inittab)288

C.6.3 样本文件288

图C—20 实例#5a postinstall脚本289

C.7 实例#5b289

C.7.1 技术289

C.7.2 方法289

图C—21 实例#5b pkginfo文件290

图C—22 实例#5b prototype文件290

C.7.3 样本文件290

图C—23 实例#5b安装类动作脚本(i.inittab)291

图C—24 实例#5b删除类动作脚本(r·inittanb)291

图C—25 实例#5c inittab文件292

C.8.2 方法292

C.8 实例#5c292

C.8.1 技术292

C.8.3 样本文件293

图C—26 实例#5c pkginfo文件293

图C—27 实例#5c prototype文件293

C.9.2 方法294

C.9.1 技术294

C.9 实例#6294

图C—28 实例#5c balld脚本(/sbin/init)294

C.9.3 样本文件295

图C—29 实例#6pkginfo文件295

图C—30 实例#6prototype文件296

图C—31 实例#6安装类别动作脚本(i·cron)296

图C—32 实例#6删除类别动作脚本(r·cron)297

图C—33 实例#6根crontab文件(与软件包一起传送)297

图C—34 实例#6syscrontab文件(与软件包一起传送)297

1992《UNIX系统第4版 程序员指南 系统服务和应用软件打包工具 Programmer's guide System services and application packaging tool》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由李建国等译 1992 北京:电子工业出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。