好书推荐 好书速递 排行榜 读书文摘

UNIX环境高级编程

UNIX环境高级编程
作者:W.Richard Stevens Stephen A.Rago / Stephen A. Rago
出版社:人民邮电出版社
出版年:2006-02
ISBN:9787115144843
行业:计算机
浏览数:101

内容简介

本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第一版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外还在附录中给出了函数原型和部分习题的答案。

本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。

......(更多)

作者简介

W.Richard Stevens备受赞誉的已帮技术作家,生前著有多种经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。

Stephen A.Rago资源UNIX程序员,是当年贝尔实验室的UNIX系统V版本4的开发人员之一,著有《UNIX系统V网络编程》,并曾担任本书第1版的技术审校。他目前是ENC管理人员,专门从事文件服务器和文件系统方向的研究。

......(更多)

目录

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

Bibliography 885

Index 891

......(更多)

读书文摘

Parent and the child share a file table entry for every open descriptor.

大多数UNIX调试程序都使用core文件以检查进程终止时的状态。

由open返回的文件描述符一定是最小的未用描述符数值。这一点被某些应用程序用来在标准输入,标准输出或标准错误输出上打开新的文件。

......(更多)

猜你喜欢

点击查看