《Solaris系统编程》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(加)Rich Teer著;云巅工作室译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2006
  • ISBN:7111185714
  • 页数:855 页
图书介绍:

目录 1

译者序 1

前言 1

第一部分 综述 1

第1章 Solaris系统 1

1.1 引言 1

1.2 登录 2

1.3 shell 2

1.4 文件、目录和文件系统 3

1.5 输入和输出 7

1.6 程序、进程和线程 10

1.7 错误处理 14

1.8 用户标识 15

1.9 信号 16

1.10 UNIX时间值 18

1.11 系统调用和库函数 19

1.12 64位编程概述 21

1.12.1 编写纯64位的程序 22

1.12.2 编译和安装64位的程序 26

1.12.3 大文件的编译环境 27

1.12.4 过渡期的大文件编译环境 28

1.13 小结 29

练习 29

第2章 Solaris简史 31

2.1 引言 31

2.2 初期SunOS 31

2.3 SunOS之后:Solaris 32

2.4 标准 32

2.4.1 ANSI/ISO/IEC C 32

2.4.3 IEEE POSIX 33

2.4.2 System V接口定义 33

2.4.5 单一UNIX规范 34

2.4.4 开放组的XPG4 34

2.5 Solaris 2.5 35

2.6 Solaris 2.6 36

2.7 Solaris 7 36

2.8 Solaris 8 36

2.9 Solaris 9 36

2.10 Solaris标准遵守情况 37

2.11 编译符合标准的应用程序 37

2.12 小结 38

练习 38

3.1 引言 39

3.2.1 测试字符类成员资格 39

3.2 处理字符类 39

第3章 实用工具函数 39

第二部分 基本主题 39

3.2.2 改变字符类成员资格 41

3.2.3 字符类小结 42

3.3 处理字符串 43

3.3.1 得到字符串的长度 44

3.3.2 比较字符串 45

3.3.3 连接字符串 48

3.3.4 复制字符串 50

3.3.5 字符串查找函数 51

3.3.6 生成字符串的副本 56

3.3.7 把一个字符串分割成标记 56

3.3.8 转换字符串的函数 59

3.3.9 把字符串转换成数字 61

3.4.1 比较字节数组 64

3.4 处理字节数组 64

3.3.10 把数字转换成字符串 64

3.4.2 复制字节数组 65

3.4.3 查找字节数组 65

3.4.4 初始化字节数组 66

3.5 动态内存 66

3.5.1 内存对齐 66

3.5.2 分配动态内存 67

3.5.3 释放动态内存 69

3.6 其他内存管理包 70

3.6.1 malloc库 70

3.6.2 bsdmalloc库 71

3.6.3 mapmalloc库 72

3.6.4 watchmalloc共享对象 72

3.6.5 比较malloc库 73

3.7.1 产生临时文件名 75

3.7 临时文件 75

3.7.2 创建临时文件 76

3.8 分析命令行参数 77

3.9 错误报告 82

3.10 挂起进程 84

3.11 小结 84

练习 84

第4章 基本的文件I/O 85

4.1 引言 85

4.2 文件描述符 85

4.3 open函数 85

4.4 creat函数 87

4.5 close和closefrom函数 87

4.6 lseek和llseek函数 88

4.7 tell函数 90

4.9 write和pwrite函数 91

4.8 read和pread函数 91

4.10 readn和writen函数 92

4.11 I/O效率 93

4.12 文件共享 94

4.13 原子的操作 96

4.14 dup和dup2函数 97

4.15 fcntl函数 99

4.16 ioctl函数 107

4.17 fdwalk函数 107

4.18 直接I/O 108

4.19 /dev/fd文件系统 110

4.20 小结 111

练习 111

5.2 文件流、数据类型和常量 112

第5章 标准I/O库 112

5.1 引言 112

5.3 标准输入、标准输出和标准错误输出 113

5.4 打开文件流 113

5.5 关闭文件流 114

5.6 读和写 115

5.6.1 字符输入函数 115

5.6.2 字符输出函数 116

5.6.3 行输入函数 116

5.6.4 行输出函数 117

5.6.5 二进制I/O 117

5.7 流状态 118

5.8 格式化I/O 119

5.8.1 格式输出 119

5.8.2 格式输入 120

5.8.3 格式转换规范 121

5.9 定位流 128

5.8.4 C语言转义序列 128

5.10 文件流锁定 130

5.11 缓冲 134

5.12 标准I/O的效率 136

5.13 小结 140

练习 140

第6章 日期和时间操作 141

6.1 引言 141

6.2 转换时间的复杂性 141

6.3 获得当前时间 142

6.4 设置当前时间 144

6.5 获得当前时区 144

6.6 UNIX时间和日历时间的转换 146

6.6.2 gmtime和gmtime_r函数 147

6.6.1 localtime和localtime_r函数 147

6.6.3 mktime函数 148

6.7 格式日期I/O 149

6.7.1 将日期转换成格式字符串 149

6.7.2 将格式字符串转换成日期 153

6.8 小结 155

练习 155

第7章 用户和组 156

7.1 引言 156

7.2 用户名 156

7.3 用户ID 159

7.4 组ID 162

7.5 组成员资格 164

7.6 口令文件 166

7.7 影像口令文件 170

7.8 读取和加密口令 175

7.9 组文件 180

7.10 utmpx和wtmpx文件 184

7.11 utmp和wtmp文件 189

7.12 lastlog文件 189

7.13 shells文件 191

7.14 小结 192

练习 192

第8章 系统信息和资源限制 193

8.1 引言 193

8.2 系统信息和识别 193

8.3 系统资源限制 198

8.4 每个进程的资源限制 207

8.5 资源控制工具 209

8.6 资源控制示例 215

8.7 资源使用信息 222

8.8 使用/proc文件系统确定资源使用信息 226

8.9 确定系统的平均负荷 233

8.10 小结 234

练习 235

第9章 安全的C编程 236

9.1 引言 236

9.2 缓冲区溢出 236

9.3 程序的环境 237

9.4 防御性编程 238

9.5 最小特权原则 238

9.6 使用chroot“监牢” 240

9.7 编写安全程序的技巧 242

9.8 小结 244

练习 245

10.2.1 dirname函数 247

10.2 路径名组件 247

10.2.2 basename函数 247

第三部分 输入/输出 247

10.1 引言 247

第10章 文件和目录 247

10.3 stat、fstat和lstat函数 249

10.4 文件类型 250

10.5 set-user-ID和set-group-ID 252

10.6 粘着位 253

10.7 文件访问权限 254

10.8 access函数 255

10.9 umask函数 257

10.10 chmod和fchmod函数 258

10.11 chown、fchown和lchown函数 260

10.12 文件尺寸 261

10.14 文件系统 262

10.13 文件截取 262

10.15 link和unlink函数 265

10.16 remove和rename函数 267

10.17 符号链接 268

10.18 解析可能包含符号链接的路径 271

10.18.1 resolvepath函数 271

10.18.2 realpath函数 271

10.19 symlink和readlink函数 272

10.20 文件时间 273

10.21 改变文件的访问时间和修改时间 275

10.21.1 utime函数 275

10.21.2 utimes函数 275

10.22 创建和删除目录 277

10.23 读取目录 277

10.23.1 opendir和fdopendir函数 277

10.23.2 readdir和readdir_r函数 278

10.23.4 closedir函数 279

10.23.3 seekdir、rewinddir和telldir函数 279

10.23.5 ftw和nftw函数 282

10.24 chdir、fchdir和getcwd函数 286

10.25 chroot和fchroot函数 287

10.26 特殊文件 288

10.27 sync和fsync函数 290

10.28 综合讨论 291

10.29 小结 295

练习 296

第11章 使用文件系统 297

11.1 引言 297

11.2 磁盘术语 297

11.3.1 getmntent、getmntany和getextmntent函数 298

11.3 已挂载的文件系统表 298

11.3.2 hasmntopt函数 301

11.3.3 resetmnttab函数 302

11.3.4 putmntent函数 303

11.4 mntfs文件系统ioctl命令 303

11.5 文件系统默认值 305

11.5.1 getvfsent系列函数 305

11.5.2 添加项到/etc/vfstab 308

11.6 挂载和卸载文件系统 308

11.6.1 mount函数 308

11.6.2 umount和umount2函数 312

11.7 获得文件系统的状态 314

11.7.1 statvfs和fstatvfs函数 314

11.7.2 ustat函数 316

11.8 读取文件系统数据结构 317

11.8.1 超级块 318

11.8.2 索引节点表 322

11.8.3 柱面组 325

11.9 小结 330

练习 330

第12章 终端I/O 331

12.1 引言 331

12.2 终端I/O概述 331

12.3 特殊的输入字符 338

12.4 获得和设置终端属性 341

12.5 终端选项标志 343

12.6 波特率函数 347

12.7 行控制函数 348

12.7.1 tcdrain函数 348

12.7.4 tcsendbreak函数 349

12.7.2 tcflow函数 349

12.7.3 tcflush函数 349

12.8 终端标识 350

12.8.1 ctermid和ctermid_r函数 350

12.8.2 isatty函数 350

12.8.3 ttyname和ttyname_r函数 351

12.9 规范模式 354

12.10 非规范模式 356

12.11 终端窗口尺寸 361

12.12 设备无关的终端控制 363

12.13 小结 364

练习 364

第13章 高级I/O 365

13.1 引言 365

13.2 非阻塞I/O 365

13.3 记录锁定 368

13.4 使用fcntl的记录锁定 369

13.5 使用lockf的记录锁定 372

13.6 死锁和活锁 372

13.7 锁继承性和释放 375

13.8 强制锁与建议锁的比较 375

13.9 STREAMS I/O子系统 377

13.10 STREAMS消息 379

13.11 putmsg和putpmsg函数 380

13.12 getmsg和getpmsg函数 381

13.13 STREAMS ioctl操作 384

13.14 使用read和write的STREAMS I/O 386

13.14.1 从STREAMS设备中读取 386

13.14.2 写入到STREAMS设备 386

13.15 I/O多路复用 387

13.16 select函数 388

13.17 poll函数 391

13.18 /dev/poll设备驱动程序 393

13.19 异步I/O 396

13.20 和STREAMS设备文件一起的异步I/O 396

13.21 和其他文件一起的异步I/O 397

13.21.1 aioread和aiowrite函数 397

13.21.2 aiowait函数 398

13.21.3 aiocancel函数 398

13.22 readv和writev函数 398

13.23 sendfile和sendfilev函数 400

13.23.1 sendfile函数 401

13.23.2 sendfilev函数 403

13.24 内存映射的I/O 406

13.25 mmap和munmap函数 406

13.27 madvise函数 412

13.26 mprotect函数 412

13.28 msync函数 413

13.29 在内存中锁定页面 413

13.29.1 mlock和munlock函数 414

13.29.2 mlockall和munlockall函数 414

13.29.3 plock函数 414

13.30 memcntl函数 416

13.31 内存映射I/O的小结 418

13.32 访问控制列表 418

13.33 acl和facl函数 419

13.34 aclfromtext和acltotext函数 420

13.35 aclcheck函数 422

13.36 aclfrommode和acltomode函数 424

13.37 aclsort函数 425

13.38 扩展的文件属性 425

13.39 openat和attropen函数 426

13.40 fstatat函数 428

13.41 unlinkat函数 429

13.42 renameat函数 429

13.43 fchownat函数 430

13.44 futimesat函数 430

13.45 改变扩展属性文件权限 431

13.46 小结 432

练习 432

第四部分 进程和进程控制 433

第14章 UNIX进程的环境 433

14.1 引言 433

14.2 进程启动 433

14.3 进程终止 434

14.3.1 exit和_exit函数 434

14.3.2 atexit函数 435

14.4 命令行参数 437

14.5 环境变量 439

14.5.1 getenv函数 439

14.5.2 putenv函数 439

14.6 C程序的内存布局 441

14.7 共享的对象 442

14.8 内存分配 444

14.8.1 sbrk函数 444

14.8.2 brk函数 444

14.9 setjmp和longjmp函数 444

14.9.1 自动变量、寄存器变量和易变的变量 447

14.9.2 _setjmp和_longjmp函数 449

14.9.3 使用自动变量时的常见错误 449

练习 450

14.11 小结 450

14.10 资源限制 450

第15章 进程控制 451

15.1 引言 451

15.2 进程标识符 451

15.2.1 getpid函数 451

15.2.2 getppid函数 451

15.3 fork和fork1函数 452

15.4 vfork函数 457

15.5 exit和_exit函数 458

15.6 wait函数 459

15.7 waitpid函数 461

15.8 wait3和wait4函数 463

15.9 waitid函数 464

15.10 竞争条件 464

15.11 exec函数 468

15.11.2 execv函数 470

15.11.3 execle函数 470

15.11.1 execl函数 470

15.11.4 execve函数 471

15.11.5 execlp函数 471

15.11.6 execvp函数 472

15.11.7 exec函数的总结 474

15.12 解释程序文件 475

15.13 system函数 479

15.14 进程记账 482

15.15 小结 486

练习 487

16.1 引言 488

16.2 终端登录 488

第16章 进程关系 488

16.3 网络登录 489

16.4 进程组 490

16.5 会话 492

16.6 控制终端 494

16.7 tcgetpgrp和tcsetpgrp函数 495

16.8 tcgetsid函数 495

16.9 作业控制 496

16.10 程序的外壳执行 499

16.11 孤立的进程组 502

16.12 小结 504

练习 505

第17章 信号 506

17.1 引言 506

17.2 信号概念 506

17.3 signal函数 512

17.4 不可靠的信号 515

17.5 可靠的信号 516

17.6 sigset函数 516

17.7 pause函数 518

17.8 sighold、sigrelse、sigignore和sigpause函数 518

17.9 中断的系统调用 519

17.10 可重入函数 520

17.11 比较SIGCHLD和SIGCLD信号 523

17.12 kill、killpg、raise、sigsend和sigsendset函数 525

17.13 alarm函数 527

17.14 间隔计时器 533

17.15 POSIX信号 536

17.16 信号集 537

17.17 sigprocmask函数 537

17.18 sigpending函数 539

17.19 sigaction函数 541

17.20 sigfpe函数 548

17.21 sigsetjmp和siglongjmp函数 551

17.22 sigsuspend函数 554

17.23 sigwait函数 559

17.24 abort函数 561

17.25 重新审视system函数 562

17.26 重新审视sleep函数 568

17.27 作业控制信号 571

17.28 软件信号 573

17.29 备选信号栈 575

17.30 系统信号消息 578

17.31 sig2str和str2sig函数 580

17.32 小结 583

练习 583

18.2 守护程序的特性 584

第18章 守护进程 584

18.1 引言 584

18.3 错误日志 585

18.4 STREAMS log驱动器 585

18.5 syslog工具 589

18.6 成为守护程序 592

18.7 仅启动守护程序的一个副本 596

18.8 小结 598

练习 599

第五部分 进程间通信 601

第19章 使用管道和FIFO的进程间通信 601

19.1 引言 601

19.2 管道 601

19.3 popen和pclose函数 609

19.4 协作进程 617

19.5 FIFO 622

19.6 迭代服务器与并行服务器 630

19.7 小结 631

练习 631

第20章 System V进程间的通信工具 632

20.1 引言 632

20.2 System V IPC的概念 632

20.3 System V消息队列 636

20.4 System V信号量集 649

20.5 System V共享内存 663

20.6 性能比较 673

20.7 小结 678

练习 678

21.1 引言 679

21.2 传递文件描述符 679

第21章 高级进程间通信 679

21.3 开放的服务器(版本1) 682

21.4 客户-服务器连接函数 688

21.5 开放的服务器(版本2) 692

21.6 小结 697

练习 697

第22章 门 698

22.1 引言 698

22.2 基本门函数 699

22.3 门信息函数 711

22.4 门的高级功能 715

22.5 门客户或门服务器的提前终止 724

22.6 小结 730

练习 730

23.1 引言 731

23.2 伪终端概述 731

第23章 伪终端 731

第六部分 伪终端 731

23.3 打开伪终端设备 735

23.4 pty_fork函数 738

23.5 pty程序 740

23.6 使用pty程序 745

23.7 高级特征 751

23.8 小结 758

练习 758

附录 759

附录A 国际化和本地化基本知识 759

附录B BSD源代码兼容性包 767

附录C 函数小结 773

附录D 其他源代码 829

附录E 部分练习题答案 836