您好,欢迎光临有路网!
UNIX高级编程
QQ咨询:
有路璐璐:

UNIX高级编程

  • 作者:
  • 出版社:人民邮电出版社
  • ISBN:9787115091505
  • 出版日期:2001年04月01日
  • 页数:591
  • 定价:¥64.00
  • 猜你也喜欢

    分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    • 出版社
    • ISBN
      9787115091505
    • 作者
    • 页数
      591
    • 出版时间
      2001年04月01日
    • 定价
      ¥64.00
    • 所属分类
    内容提要
    本书详尽地介绍了UNIX系统编程的**技术。通过本书的学习,读者将能够充分利用标准的UNIX开发工具,掌握UNIX操作系统的内部工作方法,包括文件系统的内部操作以及大量UNIX函数的正确使用方法和技巧。
    目录
    **部分 文件和目录
    第1章 编译程序注释和选项 3
    1.1 在线手册页 3
    1.2 本书使用的手册索引 4
    1.2.1 Internet上的man(1)资源 5
    1.3 本书的实例代码 5
    1.4 编译C程序 6
    1.4.1 C编译命令 7
    1.5 管理编译程序警告 11
    1.5.1 利用编译程序警告信息 11
    1.6 编译标准 18
    1.6.1 FreeBSD 3.4-Realease特征测试 19
    1.6.2 HPUX 10.2特征测试 21
    1.6.3 AIX 4.3特征测试 22
    1.6.4 SunOS 5.6特征测试 22
    1.6.5 特征测试总结 23
    1.7 小结 24
    第2章 UNIX文件系统对象 25
    2.1 文件系统对象 25
    2.1.1 常规文件 25
    2.1.2 目录 26
    2.1.3 块设备 27
    2.1.4 字符设备 28
    2.1.5 有名管道(FiFos) 29
    2.1.6 套接口 30
    2.1.7 符号链接 30
    2.1.8 特殊文件 31
    2.2 权限 33
    2.2.1 常规文件的访问 33
    2.2.2 目录的访问 34
    2.3 使用UNIX文件 35
    2.3.1 打开和关闭文件 36
    2.3.2 打开特殊文件 38
    2.3.3 使用套接口 38
    2.3.4 复制文件描述符 38
    2.3.5 改变标准输入 39
    2.4 UNIX文件I/O 40
    2.5 小结 41
    第3章 错误处理和报告 42
    3.1 确定是成功还是失败 42
    3.1.1 出错指示的一般规则 42
    3.1.2 一般规则的例外 42
    3.1.3 成功返回值的分类 43
    3.1.4 其他返回指示 43
    3.2 确定失败的原因 43
    3.3 原来的errno值 44
    3.3.1 按名称引用错误代码 45
    3.3.2 正确使用errno 45
    3.4 新的errno值 47
    3.4.1 声明新的errno值 47
    3.4.2 使用新的errno 值 47
    3.5 报告errno值 47
    3.5.1 使用perrno(3)值 48
    3.5.2 使用sys_errlist[]数组 49
    3.5.3 strerror(3)函数 51
    3.6 使用stdio(3)测试错误 53
    3.6.1 函数ferror(3)的缺陷 53
    3.6.2 避免fclose(3)的缺陷 53
    3.6.3 推迟错误报告 54
    3.7 小结 55
    第4章 UNIX输入和输出 56
    4.1 umask(2)函数和umask位 56
    4.1.1 权限位 56
    4.1.2 理解对umask的需要 57
    4.1.3 理解umask的作用域 58
    4.1.4 使用umask(2)函数 58
    4.1.5 使用umask值的例子 58
    4.1.6 umask(2) 函数 59
    4.1.7 create(2)函数 60
    4.2 读和写 61
    4.2.1 read(2) 和write(2)初步 61
    4.2.2 使用UNIX I/O 62
    4.3 文件内查找 64
    4.3.1 使用lseek(2) 64
    4.4 截取文件 66
    4.5 稀疏文件 67
    4.5.1 创建稀疏文件 67
    4.6 强迫把数据写到媒介上 70
    4.6.1 sync(2)函数 70
    4.6.2 sync(2)的缺点 71
    4.6.3 fsync(2)函数 71
    4.7 分散读写 72
    4.7.1 readv(2)和 writev(2)函数 72
    4.8 确定tty名称 74
    4.9 小结 76
    第5章 文件上锁 77
    5.1 理解上锁类型 77
    5.1.1 文件上锁技术 78
    5.1.2 文件上锁的限制 84
    5.1.3 在整个文件中使用劝告性上锁 84
    5.1.4 使用flock(2)上锁 85
    5.2 记录上锁 86
    5.2.1 使用lockf(2)上锁 86
    5.3 使用fcntl(2)实现POSIX上锁 89
    5.3.1 初始化struct flock 89
    5.3.2 上锁一个区域 90
    5.3.3 解锁区域 90
    5.3.4 获得上锁信息 91
    5.4 强制性上锁 92
    5.4.1 启用强制性上锁 93
    5.5 小结 93
    第6章 管理文件及其属性 94
    6.1 清除文件 94
    6.2 链接文件 95
    6.3 移动文件 96
    6.4 获取文件系统信息 97
    6.4.1 函数stat(2) 98
    6.4.2 函数fstat(2) 100
    6.4.3 使用文件属性 100
    6.4.4 测试文件类型 107
    6.4.5 修改、访问及创建时间 109
    6.5 测试文件的访问权限 109
    6.6 符号链接 110
    6.6.1 函数symlink(2) 110
    6.6.2 函数lstat(2) 111
    6.6.3 利用readlink(2) 读取符号链接的内容 111
    6.7 文件权限和所有权 112
    6.7.1 改变权限 112
    6.7.2 改变所有权 113
    6.8 有名管道(FIFO) 114
    6.9 获得尺寸和配置信息 115
    6.10 小结 118
    第7章 目录管理 119
    7.1 获得工作目录 119
    7.1.1 指定空缓冲区参数 120
    7.2 改变当前目录 120
    7.2.1 保存当前目录 121
    7.2.2 fchdir(2)的局限性 121
    7.3 建立新目录 122
    7.4 删除目录 123
    7.5 打开目录进行搜索 124
    7.6 关闭目录 125
    7.7 搜索目录 125
    7.8 重新回到目录的开始 128
    7.9 保存目录中的位置 128
    7.10 在目录内恢复位置 129
    7.11 扫描目录 129
    7.11.1 为scandir(3)声明自己的select 函数 130
    7.11.2 为scandir(3)声明自己的compar函数 131
    7.11.3 sysV 变体 131
    7.11.4 scandir(3)实例 132
    7.12 遍历目录结构 135
    7.13 改变根目录 137
    7.14 小结 140
    第8章 临时目录和处理清除 141
    8.1 创建临时文件 141
    8.1.1 使用函数tmpnam(3) 141
    8.1.2 使用函数mktemp(3) 145
    8.1.3 使用函数mkstemp(3) 145
    8.1.4 使用函数mkstemps(3) 148
    8.1.5 使用函数tmpfile(3) 148
    8.1.6 使用函数tempnam(3) 150
    8.2 使文件为临时文件 153
    8.2.1 使用unlink(2)使文件为临时文件 153
    8.2.2 退出清除 153
    8.2.3 使用atexit(3) 函数 153
    8.2.4 使用C++析构函数 157
    8.2.5 利用_exit(2)避免清除 162
    8.3 小结 162
    第二部分 库函数
    第9章 UNIX命令行处理 165
    9.1 命令行约定 165
    9.1.1 使用多个选项 165
    9.1.2 组合多个选项 166
    9.1.3 使用带有参数的选项 166
    9.1.4 识别选项或参数 166
    9.2 选项参数 166
    9.3 函数getopt(3) 167
    9.3.1 getopt(3)外部值 167
    9.3.2 getopt(3)函数调用 168
    9.3.3 定义optstring 参数 169
    9.3.4 定义选项处理循环 169
    9.4 函数getsubopt(3) 171
    9.4.1 确定子选项处理的结束 172
    9.4.2 getsubopt(3)的完整例子 173
    9.5 GNU长选项扩展 176
    9.5.1 GNU getopt_long(3)函数 176
    9.5.2 理解option结构 177
    9.5.3 建立option结构 177
    9.5.4 使用空的option.flag指针 177
    9.5.5 使用非空option.flag 指针 178
    9.6 小结 179
    第10章 转换函数 180
    10.1 简单的转换函数 180
    10.1.1 细查函数atoi(3) 和atol(3) 180
    10.1.2 atof(3)函数 182
    10.2 使用sscanf(3)转换和验证 182
    10.2.1 把sscanf(3)应用到数值转换 183
    10.2.2 使用sscanf(3) 测试数值转换 184
    10.2.3 改进sscanf(3)转换 184
    10.2.4 sscanf(3)的局限性 185
    10.3 函数strtol(3)和strtoul(3) 185
    10.3.1 使用strtol(3)函数 186
    10.3.2 出错测试 187
    10.3.3 测试转换指针 187
    10.3.4 多项转换 187
    10.3.5 使用base参数进行基数转换 188
    10.3.6 测试溢出和下溢 191
    10.3.7 测试strtoul(3)溢出 192
    10.4 大整数转换 193
    10.5 BSD的strtoq(3)和strtouq(3)函数 194
    10.6 strtod(3)函数 194
    10.6.1 使用strtod(3)函数 195
    10.6.2 测试算术错误 195
    10.6.3 算术错误测试的流程 196
    10.7 小结 197
    第11章 UNIX日期和时间机制 198
    11.1 时区 198
    11.1.1 世界时间标准初步 198
    11.2 定义日期和时间数据类型 200
    11.3 时间转换函数 200
    11.3.1 使用ctime(3)把时间转换为串形式 204
    11.3.2 函数ctime_r(3) 204
    11.3.3 函数localtime(3) 和gmtime(3) 205
    11.3.4 struct tm的成员 207
    11.3.5 使用函数asctime(3)把日期/时间成份转换成串 208
    11.3.6 函数tzset(3) 209
    11.3.7 利用函数mktime(3)创建Epoch时间 211
    11.4 用strftime(3)定制日期和时间格式 212
    11.4.1 strftime(3)格式说明符 213
    11.4.2 实现DTime::strftime(3)方法 214
    11.4.3 测试类DTime 215
    11.4.4 理解本地设置的作用 217
    11.5 小结 217
    第12章 用户ID、口令和组管理 218
    12.1 UNIX用户管理入门 218
    12.1.1 了解用户名和用户ID号 218
    12.1.2 了解用户名root 219
    12.1.3 组名和组ID号 219
    12.1.4 了解gid的0值 219
    12.2 getuid(2)函数和geteuid(2)函数 219
    12.3 getgid(2)函数和getegid(2)函数 220
    12.4 真正的、有效的和已保存的用户ID 220
    12.4.1 有效的用户ID 220
    12.4.2 真正的用户ID 220
    12.4.3 已保存的用户ID 221
    12.4.4 身份验证角色概要 221
    12.5 设置用户ID 221
    12.6 设置组ID 222
    12.7 FreeBSD的issetugid(2)函数 223
    12.8 etc/passwd文件 223
    12.8.1 注释字段 224
    12.8.2 使用注释字段的&特征 225
    12.9 口令数据库例程 225
    12.9.1 passwd结构 226
    12.9.2 getpwent(3)的错误处理 226
    12.9.3 fgetpwent(3)函数 227
    12.9.4 putpwent(3)函数 227
    12.9.5 getpwuid(3)函数 228
    12.9.6 getpwnam(3)函数 228
    12.10 组数据库 229
    12.10.1 /etc/group文件 229
    12.10.2 getgrent(3)、setgrent(3)和endgrent(3)函数 230
    12.10.3 了解group结构 230
    12.10.4 fgetgrent(3)函数 231
    12.10.5 getgrgid(3)函数 232
    12.10.6 getgrnam(3)函数 232
    12.11 相关的重入函数 232
    12.12 辅助组 233
    12.12.1 getgroups(2)函数 233
    12.12.2 使用setgroups(2)函数设置组 236
    12.12.3 为指定的用户名设置组 236
    12.13 小结 237
    第13章 静态库和共享库 238
    13.1 静态库 238
    13.1.1 检测进程内存映像 238
    13.1.2 实现静态库 239
    13.1.3 使用ar(1)命令创建存档文件 245
    13.1.4 列出存档的目录 246
    13.1.5 获得存档的详细列表 247
    13.1.6 链接静态库 247
    13.2 共享库 248
    13.2.1 静态库的局限性 248
    13.2.2 创建共享库 249
    13.2.3 链接共享库 249
    13.2.4 选择静态库或动态库 249
    13.2.5 列出共享库的引用 250
    13.2.6 动态加载程序 250
    13.2.7 位置无关的代码 252
    13.2.8 控制共享内容 253
    13.3 静态库和共享库的比较 254
    13.3.1 静态库的好处 254
    13.3.2 共享库的优点 255
    13.4 动态库加载 256
    13.4.1 打开共享库 256
    13.4.2 报告错误 257
    13.4.3 获得共享的引用指针 257
    13.4.4 关闭共享库 257
    13.4.5 初始化和析构 258
    13.4.6 应用动态加载 258
    13.4.7 HPUX 10.2动态库加载 261
    13.5 小结 264
    第14章 数据库库例程 265
    14.1 NDBM数据库 266
    14.1.1 错误处理 266
    14.1.2 打开NDBM数据库 267
    14.1.3 关闭NDBM数据库 267
    14.1.4 存储信息 267
    14.1.5 获取信息 269
    14.1.6 删除信息 269
    14.1.7 访问所有关键字 270
    14.1.8 使用dbm_nextkey(3)函数删除关键字 271
    14.2 NDBM数据库示例 272
    14.2.1 目录软件 272
    14.2.2 Dbm类 276
    14.2.3 InoDb类 282
    14.2.4 SnapShot应用程序 287
    14.2.5 运行SnapShot应用程序 296
    14.2.6 访问所有的关键字并删除 299
    14.3 小结 301
    第三部分 **概念
    第15章 信号 305
    15.1 了解UNIX信号 305
    15.2 可靠的和不可靠的信号 306
    15.3 不可靠的signal(3) API 306
    15.4 可靠的信号API 309
    15.4.1 清空信号集 309
    15.4.2 填充信号集 310
    15.4.3 给信号集添加信号 310
    15.4.4 从信号集中删除信号 311
    15.4.5 测试一个集合中的信号 311
    15.4.6 设置信号操作 312
    15.4.7 信号操作标志 313
    15.4.8 使用可靠的信号 314
    15.5 控制信号 315
    15.5.1 阻塞信号 315
    15.5.2 获得等待状态的信号 317
    15.5.3 sigsuspend(2)函数 317
    15.6 应用alarm(3)函数 318
    15.7 从信号处理程序中调用函数 321
    15.7.1 避免重入代码的问题 322
    15.7.2 在信号处理程序中用errno报告重入的问题 322
    15.8 应用EINTR错误代码 323
    15.9 唤醒信号 324
    15.10 小结 325
    第16章 有效的I/O调度 326
    16.1 非阻塞的I/O 326
    16.1.1 在非阻塞模式下打开文件 326
    16.1.2 设置非阻塞模式 327
    16.1.3 非阻塞的I/O操作 328
    16.1.4 使用非阻塞I/O带来的问题 330
    16.2 I/O调度函数 330
    16.2.1 文件描述符集合以及它们的宏 331
    16.2.2 timeval结构 332
    16.2.3 select(2)函数 332
    16.2.4 使用select(2)函数 335
    16.3 I/O轮询 340
    16.3.1 轮询事件 342
    16.3.2 轮询优先级 343
    16.3.3 poll(2)示例 343
    16.4 小结 347
    第17章 计时器 348
    17.1 睡眠函数 348
    17.2 sleep(3)的UNIX实现 350
    17.2.1 以微秒为单位的睡眠 353
    17.2.2 以纳秒为单位的睡眠 356
    17.3 间隔计时器函数 360
    17.3.1 间隔计时器API 360
    17.3.2 间隔计时器宏 362
    17.3.3 间隔计时器的制约 363
    17.3.4 创建只执行一次的计时器 363
    17.3.5 创建重复计时器 366
    17.4 小结 370
    第18章 管道和进程 371
    18.1 UNIX管道 371
    18.1.1 创建UNIX管道 371
    18.1.2 将管道打开到其他进程 372
    18.1.3 从管道读取数据 374
    18.1.4 将数据写到管道 375
    18.1.5 关闭管道 378
    18.1.6 处理已破坏的管道 379
    18.2 不用管道的外部进程 380
    18.2.1 解释system(3)函数的返回值 381
    18.2.2 调用命令 381
    18.2.3 仔细考查system(3)函数 384
    18.3 小结 385
    第19章 分支进程 386
    19.1 UNIX分支进程概述 386
    19.1.1 fork(2)函数 388
    19.1.2 使用fork(2) 388
    19.2 等待进程完成 390
    19.2.1 僵进程 390
    19.2.2 wait(2)函数 392
    19.2.3 解释退出状态 394
    19.2.4 其他等待系统调用 395
    19.3 执行新程序 397
    19.4 exec(2)系列的其他成员 402
    19.5 小结 404
    第20章 模式匹配 405
    20.1 shell模式 405
    20.1.1 *元字符 406
    20.1.2 ?元字符 406
    20.1.3 [元字符和]元字符 406
    20.1.4 !元字符 407
    20.1.5 带有\的转义字符 408
    20.2 字符串模式函数 409
    20.3 glob(3)函数 417
    20.3.1 glob(3)函数的返回值 419
    20.4 小结 433
    第21章 正则表达式 434
    21.1 了解正则表达式 434
    21.1.1 固定符 434
    21.1.2 集合 435
    21.1.3 范围 436
    21.1.4 字符类 436
    21.1.5 .元字符 436
    21.1.6 加上括号的匹配子表达式 437
    21.1.7 原子 437
    21.1.8 段 437
    21.1.9 分支 438
    21.1.10 表达式边界 439
    21.1.11 引用的字符 439
    21.2 正则表达式库 439
    21.2.1 编译正则表达式 440
    21.2.2 报告错误 441
    21.2.3 释放正则表达式 442
    21.2.4 匹配正则表达式 443
    21.2.5 应用正则表达式 444
    21.3 小结 450
    第22章 进程间的通信 451
    22.1 IPC的类型 451
    22.2 消息队列 451
    22.3 共享内存 453
    22.4 信号量 454
    22.5 引用IPC资源 455
    22.5.1 IPC关键字值 456
    22.5.2 创建IPC资源 456
    22.5.3 根据IPC关键字访问 457
    22.5.4 根据IPC ID访问 457
    22.6 撤销IPC资源 457
    22.7 小结 458
    第23章 消息队列 459
    23.1 控制消息队列 459
    23.1.1 创建消息队列 459
    23.1.2 访问消息队列 459
    23.1.3 撤销消息队列 460
    23.1.4 获得消息队列的信息 460
    23.1.5 改变消息队列 461
    23.2 发送消息和接收消息 462
    23.2.1 发送消息 462
    23.2.2 接收消息 464
    23.3 使用消息队列 465
    23.4 小结 485
    第24章 信号量 486
    24.1 信号量实用程序 486
    24.2 创建和访问信号量集合 488
    24.3 撤销信号量集合 491
    24.4 控制信号量 493
    24.4.1 查询信号量集合 493
    24.4.2 更改信号量访问 499
    24.4.3 查询信号量的值 502
    24.4.4 查询整个信号量集合的值 503
    24.4.5 更改信号量的值 504
    24.4.6 更改整个信号量集合的值 505
    24.4.7 查询信号量的进程ID 506
    24.4.8 查询等待通知的进程数 508
    24.4.9 查询等待0的进程数 508
    24.5 使用信号量 508
    24.5.1 等待信号量 510
    24.5.2 通知信号量 514
    24.5.3 等待0操作 514
    24.5.4 信号量取消处理 514
    24.5.5 semop实用程序 516
    24.6 小结 526
    第25章 共享内存 527
    25.1 globvar实用程序 527
    25.1.1 创建全局变量池 528
    25.1.2 撤销全局变量池 528
    25.1.3 globvar环境变量 529
    25.1.4 创建全局变量 529
    25.1.5 访问全局变量 529
    25.1.6 删除全局变量 530
    25.1.7 清除全局变量池 530
    25.2 共享内存系统调用 530
    25.2.1 创建和访问共享内存 531
    25.2.2 获取共享内存的信息 533
    25.2.3 更改共享内存属性 535
    25.2.4 连接共享内存 536
    25.2.5 释放共享内存 537
    25.2.6 撤销共享内存 539
    25.3 使用共享内存 539
    25.4 小结 551
    第26章 内存映射的文件 552
    26.1 确定页面的大小 553
    26.2 创建内存的映射 554
    26.3 控制内存映射的区域 563
    26.3.1 更改访问保护 563
    26.3.2 通知核心内存的使用情况 564
    26.3.3 查询内存中的页面 567
    26.3.4 同步更改 568
    26.4 撤销内存映射 569
    26.5 小结 570
    第27章 X Window编程 571
    27.1 事件驱动的编程 571
    27.1.1 事件驱动的模型 572
    27.1.2 客户/服务器处理 572
    27.1.3 软件层次 573
    27.2 Xlib客户程序 575
    27.3 小结 591

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外