UNIX环境高级编程

出版时间:2002-1-1  出版社:机械工业出版社  作者:W.Richard Stevens  页数:744  
Tag标签:无  

内容概要

If you are an experienced C programmer with a working knowledge of UNIX, you cannot afford to be without this up-to -date tutorial on the system call interface and the most important functions found in the ANSI C library. Richard Stevens describes more than 200 system calls and functions; since he believes the best way to learn code is to read code,a brief example accompanies each description. Building upon information presented in the first 15 chapters, the author offers chapter-long examples teaching you how to create a database library, a PostScript printer driver, a modem dialer, and a program that runs other programs under a pseudo terminal. To make your analysis and understanding ofthis code even easier, and to allow you to modify it, all of the code in the book is available via UUNET. Advanced Programming in the UNIX Environment is applicable to all major UNIX releases, especially System V Release $ and the latest release of 4.3BSD, including 386BSD. These real-world implementations allow you to more clearly understand the status of the current and future standards,including IEEE POSIX and XPG3.

书籍目录

Chapter 1. Introduction
1.1 Introduction
1.2 Logging In
1.3 Files and Directories
1.4 Input and Output
1.5 Programs and Processes
1.6 ANSI C Features
1.7 Error Handling
1.8 User Identification
1.9 Signals
1.10 Unix Time Values
1.11 System Calls and Library Functions
1.12 Summary
Chapter 2. Unix Standardization and Implementations
2.1 Introduction
2.2 Unix Standardization
2.3 Unix Implementations
2.4 Relationship of Standards and Implementations
2.5 Limits
2.6 Feature Test Macros
2.7 Primitive System Data Types
2.8 Conflicts Between Standards
2.9 Summary
Chapter 3. FiIe I/O
3.1 Introduction
3.2 File Descriptors
3.3 open Function
3.4 creat Function
3.5 close Function
3.6 lseek Function
3.7 read Function
3.8 write Function
3.9 I/O Efficiency
3.10 File Sharing
3.11 Atomic Operations
3.12 dup and dup2 Functions
3.13 fcntl Function
3.14 ioctl Function
3.15 /dev/fd
3.16 Summary
Chapter 4. Files and Directories
4.1 Introduction
4.2 stat, fstat, and lstat Functions
4.3 File Types
4.4 Set-User-ID and Set-Group-lD
4.5 File Access Permissions
4.6 Ownership of New Files and Directories
4.7 access Function
4.8 umask Function
4.9 chmod and fchmod Functions
4.10 Sticky Bit 88
4.11 chown, fchown, and lchown Functions
4.12 File Size
4.13 File Truncation
4.14 Fijesystems
4.15 link, unlink, remove, and rename Functions
4.16 Symbolic Links
4.17 symlink and readlink Functions
4.18 File Times
4.19 utime Function
4.20 mkdir and rmdir Functions
4.21 Reading Directories
4.22 chdir, fchdir, and getcwd Functions
4.23 Special Device Files
4.24 sync and fsync Functions
4.25 Summary of File Access Permission Bits
4.26 Summary
Chapter 5. Standard I/O Library
5.1 Introduction
5.2 Streams and FILE Objects
5.3 Standard Input, Standard Output, and Standard Error
5.4 Buffering
5.5 Opening a Stream
5.6 Reading and Writing a Stream
5.7 Line-at-a-Time I/O
5.8 Standard I/O Efficiency
5.9 Binary I/O
5.10 Posltioning a Stream
5.11 Formatted I/O
5.12 Implementation Details
5.13 Temporary Files
5.14 Alternatives to Standard I/O
5.15 Summary
Chapter 6. System Data Files and Information
6.1 Introduction
6.2 Password File
6.3 Shadow Passwords
6.4 Group File
6.5 Supplementary Group IDs
6.6 Other Data Files
6.7 Login Accounting
6.8 System Identification
6.9 Time and Date Routines
6.10 Summary
Chapter 7. The Environment of a Unix Process
7.1 Introduction
7.2 main Function
7.3 Process Termination
7.4 Command-Line Arguments
7.5 Environment List
7.6 Memory Layout of a C Program
7.7 Shared Libraries
7.8 Memory Allocation
7.9 Environment Variables
7.10 set jmp and ionqjmp Functions
7.11 qetrlimit and setrlimit Functions
7.12 Summary
Chapter 8. Process Control
8.1 Introduction
8.2 Process Identifiers
8.3 fork Function
8.4 vfork Function
8.5 exit Functions
8.6 wait and waitpid Functions
8.7 wait3 and wait4 Functions
8.8 Race Conditions
8.9 exec Functions
8.10 Changing User IDs and Group IDs
8.11 Interpreter Files
8.12 system Function
8.13 Process Accounting
8.14 User Identification
8.15 Process Times
8.16 Summary
Chapter 9. Process Relationships
9.1 Introduction
9.2 Terminal Logins
9.3 Network Logins
9.4 Process Groups
9.5 Sessions
9.6 Controlling Terminal
9.7 tcgetpqrp and tcsetpgrp Functions
9.8 Job Control
9.9 Shell Execution of Programs
9.10 Orphaned Process Groups
9.11 4.3+BSD Implementation
9.12 Summary
Chapter 10. Signals
10.1 Introduction
10.2 Signal Concepts
10.3 signal Function
10.4 Unreliable Signals
10.5 Interrupted System Calls
10.6 Reentrant Functions
10.7 SIGCLD Semantics
10.8 Reliable Signal Terminology and Semantics
10.9 kill and ra1se Functions
10.10 alarm and pause Functions
10.11 Signal Sets
10.12 siqprocmask Function
10.13 siqpending Function
10.14 sigaction Function
10.15 sigsetjmp and siglongjmp Functions
10.16 siqsuspend Function
10.17 abort Function
10.18 system Function
10.19 sleep Function
10.20 Job-Control Signals
10.21 Addltional Features
10.22 Summary
Chapter 11. Terminal I/O
11.1 Introduction
11.2 Overview
11.3 Special Input Characters
11.4 Getting and Setting Terminal Attributes
11.5 Terminal Option Flags
11.6 stty Command
11.7 Baud Rate Functions
11.8 Line Control Functions
11.9 Terminal Identification
11.10 Canonical Mode
11.11 Noncanonical Mode
11.12 Terminal Window Size
11.13 termcap, terminfo. and curses
11.14 Summary
Chapter 12. Advanced I/O
12.1 Introduction
12.2 Nonblocking I/O
12.3 Record Locking
12.4 Streams
12 5 I/O Multiplexing
12.6 Asynchronous I/O
12.7 readv and writev Functions
12.8 readn and writen Functions
12.9 Memory Mapped I/O
12.10 Summary
Chapter 13. Daemon Processes
13.1 Introduction
13.2 Daemon Characteristics
13.3 Coding Rules
13.4 Error Loggjng
13.5 Client-Server Model
13.6 Summary
Chapter 14. Interprocess Communication
14.1 Introduction
14.2 Pipes
14.3 popen and pciose Functions
14.4 Coprocesses
14.5 FIFOs
14.6 System V IPC
14.7 Message Queues
14.8 Semaphores
14.9 Shared Memory
14.10 Client-Server Properties
14.11 Summary
Chapter 15. Advanced Interprocess Communication
15.1 Introduction
15.2 Stream Pipes
15.3 Passing File Descriptors
15.4 An Open Server, Version 1
15.5 Client--Server Connection Functions
15.6 An Open Server, Version 2
15.7 Summary
Chapter 16. A Database Library
16.1 Introduction
16.2 History
16.3 The Library
16.4 Implementation Overview
16.5 Centralized or Decentralized?
16.6 Concurrency
16.7 Source Code
16.8 Performance
16.9 Summary
Chapter 17. Communicating with a PostScript Printer
17.1 Introduction
17.2 PostScript Communication Dynamics
17.3 Printer Spooling
17.4 Source Code
17.5 Summary
Chapter 18. A Modem Dialer
18.1 Introduction
18.2 History
18.3 Program Design
18.4 Data Files
18.5 Server Design
18.6 Server Source Code
18.7 Client Design
18.8 Client Source Code
18.9 Summary
Chapter 19. Pseudo Terminals
19.1 Introduction
19.2 Overview
19.3 Opening Pseudo-Terminal Devices
19.4 pty_fork Function
19.5 pty Program
19.6 Using the pty Program
19.7 Advanced Features
19.8 Summary
Appendix A. Function Prototypes
Appendix B. Miscellaneous Source Code
B.1 Our Header File
B.2 Standard Error Routines
Appendix C. Solutions to Selected Exercises
Bibliography
Index

图书封面

图书标签Tags

评论、评分、阅读与下载


    UNIX环境高级编程 PDF格式下载


用户评论 (总计11条)

 
 

  •     APUE、UNP两卷,这三本书应该是进入linux编程的必读之书,如果真正读完这三本书,并且认真思考过,再加上一些项目的练习,那么你会成为一个能做事的程序员,你会有能力单独完成一个不算复杂的项目;但是也仅仅是一个能做事的程序员而已,离一个优秀的程序员还很远。
  •     我看这本书的目的就是更加深入地理解Unix,读得不是很细,但也从中学到很很多基础且重要的知识。书中大量的实例代码,对于知识的理解和平时的查阅非常有用。稍微不足的地方是整本书在在讲述概念的时候比较官方,比喻、图示等人类更容易理解的方式用的还不是特别多。
  •     这本书不错。不过自学起来有地方不懂,搞不明白,怪累的。有朋友说在猎豹网校上学这个课程,是看视频那种,挺容易看懂的,就象有个老师面对面讲课操作给我看一样。我就也上去试听了一下,老师讲的还真不错,听一下,真是就简单多了!象我这样上班三班倒的人,没有大块时间,下了班随时找点空,就上网听几下,就能学下来了。
      
  •     第21章,与网络打印机通信
      
      printd.c的代码中,从863到878行,如果读的缓冲区刚好在"Content-Length:xxxx"(xxxx代表一个数字)中的数字部分截断,那得到的content-length就不是真实长度了。
      
      求证。
  •     这本书很棒,真的。
      可惜作者死掉了。
      很喜欢书中例子简明,但靠他搞不定事情。我是指编程技巧,可能还需要一些算法方面的书,比如The art of computtting programming.
      
      这本书里面的File概念在大多数动态语言中有着相似的实现,当然要方便许多。
      当你某天在python中看到select系统调用,你会泪流满面的想到APUE:
      They are exactly the same thing!!!!!!!
      
      Signal这一章有点乱,当然不通种的*unix在上面刀光剑影的事情太多了。
      reentra没看懂,但是wiki上面的reentrant有个甚好的补充。
      
      Thread避免了不同task之间的序列化,用起来很棒,但是sync除外。
      
      说说sync吧:
      在C里,sync是件麻烦时,因为要考虑signal和thread的交互影响,好像一个不小心就deadlock,感觉像是走在钢丝线上,一个不慎万劫不复。如果要考虑各种情况的话,就有点想玩排列组合,这真的很累哦。
      我想有没有数学方法可以在编程中借鉴,对于这些事务进行处理?
      
      说实话,书中对程序中的数据加lock进行保护的方法真的不怎么好。
      如果这些数据一多--lock同样的增多,在非良构的程序中,程序出错的机率大大增加。即使在良构的程序中,这些lock也要占用大量的系统资源。
      
      对于上述情况,现在的程序的做法,好像是对于thread进行限制,让他只能接触自己的数据,不同thread的之间通过消息来传递数据。想想html5中的worker吧,post message或者是get message来和主线程通信。说实在话,全局的资源还是有冲突的可能,但是这至少是事情变得省心的开始。
      
      也许erlang, clojure这些functional language在这条路上走的更远。这些是程序世界的迷人之处,小的变革,影响世界。
      
      
      
      BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,BULA,
  •     Mon Nov 08 , 2010 Beijing
      刚刚拜读完UNIX环境高级编程-(第2版),感受如下:
      1,详细描述标准ISO C 以及POSIX.1 库的介绍还有具体应用;
      2,分别针对Linux,Unix,Solaris 系统上C编程做了详细描述
  •   真要是那么巧的中断在数字部分,content-length 就gg了
  •   这个概率不小吧。那gg也太容易了
  •   嗯,要是断在这确实比较惨~ 不过我认为概率真不大~ 他每次读取的数据应该可以最少包含一个完整的http请求,除非超时或者被中断 这时候就当做错误处理了~
  •   恩,你说的也对。我刚查了下,代码里一次读的大小是8k,想必也够一个http头了。我是受代码中大量的readmore的影响了。
  •   是 mesg truancation !
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7