UNIX环境高级编程(英文版·第2版)
|
|
| 新书城图书编号:30017 |
| 图书ISBN:7115144842 |
| 出版时间:2006-2-1 |
| 出版社:人民邮电出版社 |
| 作者:(美)史蒂文斯,(美)拉戈 著 |
|
市场价格:¥99 |
|
普通会员:¥79.2
|
80折 |
|
VIP会员:¥74.25
|
75折 |
|
|
|
|
|
|
|
【图书简介】
|
|
十多年来,无数C程序员都依靠一本书深入了解了驱动UNIX和Linux内核的编程接口的实用知识,这本书就是已故的W R1chara SteVens所著的《UNIX环境高级编程》一十多年后,UNIX技术和产品已经有了巨大变化,本书的更新可以说是众望所归,现在Stevens的同事Stephen Rago彻底更新了这本经典著作,以反映最新的技术进展,并加入了对现今几种主流UNIX和Linux平台的支持: Rago保留了使本书前版成为经典的精髓和方法:在Stevens原著的基础之上,新版增加了大量的新内容,包括讨论线程和多线程编程、使用套接字接口驱动进程间通信(IPC)的新章节,还广泛讨论了最新版的POSIX.1标准中新增的接口一几乎所有示例都已经在目前最主流的4个UNIX/Linux平台上测试过,包括FreeBSD 5.2.1、Linux 2.4.22内核、Solaris9和Darwin 7.4.0fAppie MAC OS X 10.3的开源核心) 与第1版一样,读者仍然可以通过示例进行学习,这些示例包括了1万多行可下载的ANSI C源代码。书中通过简明但是完整的程序阐述了400多个系统调用和函数,清楚地说明它们的用法、参数和返回值、为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每一个案例都根据现代的技术环境进行了全面更新:
|
|
|
|
【图书目录】
|
Chapter 1. UNIX System Overview 1 1.1 Introduction 1 1.2 UNIX Architecture 1 1.3 Logging In 2 1.4 Files and Directories 4 1.5 Input and Output 8 1.6 Programs and Processes 10 1.7 Error Handling 14 1.8 User Identification 16 1.9 Signals 18 1.10 Time Values 20 1.11 System Calls and Library Functions 21 1.12 Summary 23 Chapter 2. UNIX Standardization and Implementations 25 2.1 Introduction 25 2.2 UNIX Standardization 25 2.2.1 ISO C 25 2.2.2 IEEE POSIX 26 2.2.3 The Single UNIX Specification 29 2.2.4 FIPS 33 2.3 UNIX System Implementations 33 2.3.1 UNIX System V Release 4 33 2.3.2 4.4BSD 34 2.3.3 FreeBSD 35 2.3.4 Linux 35 2.3.5 Mac OS X 35 2.3.6 Solaris 35 2.3.7 Other UNIX Systems 36 2.4 Relationship of Standards and Implementations 36 2.5 Limits 36 2.5.1 ISO C Limits 38 2.5.2 POSlX Limits 38 2.5.3 XSl Limits 40 2.5.4 sysconf, pathconf, and fpathconf Functions 41 2.5.5 Indeterminate Runtime Limits 48 2.6 Options 52 2.7 Feature Test Macros 55 2.8 Primitive System Data Types 56 2.9 Conflicts Between Standards 56 2.10 Summary 58 Chapter 3. File I/0 59 3.1 Introduction 59 3.2 File Descriptors 59 3.3 open Function 60 3.4 creat Function 62 3.5 close Function 63 3.6 1 seek Function 63 3.7 read Function 67 3.8 write Function 68 3.9 I/O Efficiency 68 3.10 File Sharing 70 3.11 Atomic Operations 74 3.12 dup and dup2 Functions 76 3.13 sync, fsync, and fdatasync Functions 77 3.14 fcnt 1 Function 78 3.15 ioct 1 Function 83 3.16 /dev/fd 84 3.17 Summary 85 Chapter 4. Files and Directories 87 4.1 Introduction 87 4.2 stat, fstat, and lstat Functions 87 4.3 File Types 88 4.4 Set-User-ID and Set-Group-ID 91 4.5 File Access Permissions 92 4.6 Ownership of New Files and Directories 95 4.7 access Function 95 4.8 umask Function 97 4.9 chmod and f chmod Functions 99 4.10 Sticky Bit 101 4.11 chown, fchown, and lchown Functions 102 4.12 File Size 103 4.13 File Truncation 105 4.14 File Systems 105 4.15 link, unlink, remove, and rename Functions 108 4.16 Symbolic Links 112 4.17 syml ink and readlink Functions 115 4.18 File Times 115 4.19 ut ime Function 116 4.20 mkdir and rmdir Functions 119 4.21 Reading Directories 120 4.22 chdir, fchdir, and getcwd Functions 125 4.23 Device Special Files 127 4.24 Summary of File Access Permission Bits 130 4.25 Summary 130 Chapter 5. Standard I/O Library 133 5.1 Introduction 133 5.2 Streams and FILE Objects 133 5.3 Standard Input, Standard Output, and Standard Error 135 5.4 Buffering 135 5.5 Opening a Stream 138 5.6 Reading and Writing a Stream 140 5.7 Line-at-a-Time I/O 142 5.8 Standard I/O Efficiency 143 5.9 Binary I/O 145 5.10 Positioning a Stream 147 5.11 Formatted I/O 149 5.12 Implementation Details 153 5.13 Temporary Files 155 5.14 Alternatives to Standard I/O 159 5.15 Summary 159 Chapter 6. System Data Files and Information 161 6.1 Introduction 161 6.2 Password File 161 6.3 Shadow Passwords 165 6.4 Group File 166 6.5 Supplementary Group IDs 167 6.6 Implementation Differences 169 6.7 Other Data Files 169 6.8 Login Accounting 170 6.9 System Identification 171 6.10 Time and Date Routines 173 6.11 Summary 177 Chapter 7. Process Environment 179 7.1 Introduction 179 7.2 main Function 179 7.3 Process Termination 180 7.4 Command-Line Arguments 185 7.5 Environment List 185 7.6 Memory Layout of a C Program 186 7.7 Shared Libraries 188 7.8 Memory Allocation 189 7.9 Environment Variables 192 7.10 set j mp and longj mp Functions 195 7.11 getrlimit and setrlimit Functions 202 7.12 Summary 206 Chapter 8. Process Control 209 8.1 Introduction 209 8.2 Process Identifiers 209 8.3 fork Function 211 8.4 vfork Function 216 8.5 exit Functions 218 8.6 wait and waitpid Functions 220 8.7 waitid Function 226 8.8 wait3 and wait4 Functions 227 8.9 Race Conditions 227 8.10 exec Functions 231 8.11 Changing User IDs and Group IDs 237 8.12 Interpreter Files 242 8.13 system Function 246 8.14 Process Accounting 250 8.15 User Identification 256 8.16 Process Times 257 8.17 Summary 259 Chapter 9. Process Relationships 261 9.1 Introduction 261 9.2 Terminal Logins 261 9.3 Network Logins 266 9.4 Process Groups 269 9.5 Sessions 270 9.6 Controlling Terminal 272 9.7 tcgetpgrp, tcsetpgrp, and tcgetsid Functions 273 9.8 Job Control 274 9.9 Shell Execution of Programs 278 9.10 Orphaned Process Groups 282 9.11 FreeBSD Implementation 285 9.12 Summary 287 Chapter 10. Signals 289 10.1 Introduction 289 10.2 Signal Concepts 289 10.3 signal Function 298 10.4 Unreliable Signals 301 10.5 Interrupted System Calls 303 10.6 Reentrant Functions 305 10.7 s IGCLD Semantics 308 10.8 Reliable-Signal Terminology and Semantics 310 10.9 kill and raise Functions 311 10.10 alarm and pause Functions 313 10.11 Signal Sets 318 10.12 sigprocmask Function 320 10.13 s igpending Function 322 10.14 sigaction Function 324 10.15 sigsetjmp and siglongjmp Functions 329 10.16 s igsuspend Function 333 10.17 abort Function 340 10.18 sys t em Function 342 10.19 s I eep Function 347 10.20 Job-Control Signals 349 10.21 Additional Features 352 10.22 Summary 353 Chapter 11. Threads 355 11.1 Introduction 355 11.2 Thread Concepts 355 11.3 Thread Identification 356 11.4 Thread Creation 357 11.5 Thread Termination 360 11.6 Thread Synchronization 368 11.7 Summary 385 Chapter 12. Thread Control 387 12.1 Introduction 387 12.2 Thread Limits 387 12.3 Thread Attributes 388 12.4 Synchronization Attributes 393 12.5 Reentrancy 401 12.6 Thread-Specific Data 406 12.7 Cancel Options 410 12.8 Threads and Signals 413 12.9 Threads and fork 416 12.10 Threads and I/O 420 12.11 Summary 420 Chapter 13. Daemon Processes 423 13.1 Introduction 423 13.2 Daemon Characteristics 423 13.3 Coding Rules 425 13.4 Error Logging 428 13.5 Single-Instance Daemons 432 13.6 Daemon Conventions 434 13.7 Client-Server Model 439 13.8 Summary 439 Chapter 14. Advanced I/O 441 14.1 Introduction 441 14.2 Nonblocking I/O 441 14.3 Record Locking 444 14.4 STREAMS 460 14.5 I/O Multiplexing 472 14.5.1 select and pselect Functions 474 14.5.2 pol 1 Function 479 14.6 Asynchronous I/O 481 14.6.1 System V Asynchronous I/O 481 14.6.2 BSD Asynchronous I/O 482 14.7 readv and writev Functions 483 14.8 readn and writen Functions 485 14.9 Memory-Mapped I/O 487 14.10 Summary 492 Chapter 15. Interprocess Communication 495 15.1 Introduction 495 15.2 Pipes 496 15.3 popen and pclose Functions 503 15.4 Cop rocesses 510 15.5 FIFOs 514 15.6 XSI IPC 518 15.6.1 Identifiers and Keys 518 15.6.2 Permission Structure 520 15.6.3 Configuration Limits 521 15.6.4 Advantages and Disadvantages 521 15.7 Message Queues 522 15.8 Semaphores 527 15.9 Shared Memory 533 15.10 Client-Server Properties 541 15.11 Summary 543 Chapter 16. Network IPC: Sockets 545 16.1 Introduction 545 16.2 Socket Descriptors 546 16.3 Addressing 549 16.3.1 Byte Ordering 549 16.3.2 Address Formats 551 16.3.3 Address Lookup 553 16.3.4 Associating Addresses with Sockets 560 16.4 Connection Establishment 561 16.5 Data Transfer 565 16.6 Socket Options 579 16.7 Out-of-Band Data 581 16.8 Nonblocking and Asynchronous I/O 582 16.9 Summary 583 Chapter 17. Advanced IPC 585 17.1 Introduction 585 17.2 STREAMS-Based Pipes 585 17.2.1 Naming STREAMS Pipes 589 17.2.2 Unique Connections 590 17.3 UNIX Domain Sockets 594 17.3.1 Naming UNIX Domain Sockets 595 17.3.2 Unique Connections 597 17.4 Passing File Descriptors 601 17.4.1 Passing File Descriptors over STREAMS-Based Pipes 604 17.4.2 Passing File Descriptors over UNIX Domain Sockets 606 17.5 An Open Server, Version 1 615 17.6 An Open Server, Version 2 620 17.7 Summary 629 Chapter 18. Terminal I/O 631 18.1 Introduction 631 18.2 Overview 631 18.3 Special Input Characters 638 18.4 Getting and Setting Terminal Attributes 643 18.5 Terminal Option Flags 643 18.6 stty Command 651 18.7 Baud Rate Functions 652 18.8 Line Control Functions 653 18.9 Terminal Identification 654 18.10 Canonical Mode 660 18.11 Noncanonical Mode 663 18.12 Terminal Window Size 670 18.13 termcap, terminfo, and curses 672 18.14 Summary 673 Chapter 19. Pseudo Terminals 675 19.1 Introduction 675 19.2 Overview 675 19.3 Opening Pseudo-Terminal Devices 681 19.3.1 STREAMS-Based Pseudo Terminals 683 19.3.2 BSD-Based Pseudo Terminals 686 19.3.3 Linux-Based Pseudo Terminals 689 19.4 pty fork Function 691 19.5 pty Program 694 19.6 Using the pty Program 698 19.7 Advanced Features 705 19.8 Summary 706 Chapter 20. A Database Library 709 20.1 Introduction 709 20.2 History 709 20.3 The Library 710 20.4 Implementation Overview 712 20.5 Centralized or Decentralized? 716 20.6 Concurrency 718 20.7 Building the Library 719 20.8 Source Code 719 20.9 Performance 747 20.10 Summary 752 Chapter 21. Communicating with a Network Printer 753 21.1 Introduction 753 21.2 The Internet Printing Protocol 753 21.3 The Hypertext Transfer Protocol 756 21.4 Printer Spooling 757 21.5 Source Code 758 21.6 Summary 805 Appendix A. Function Prototypes 807 Appendix B. Miscellaneous Source Code 843 B.1 Our Header File 843 B.2 Standard Error Routines 846 Appendix C. Solutions to Selected Exercises 853
|
|
|
|