Đây là bộ sách tiếng anh cho dân công nghệ thông tin chuyên về bảo mật,lập trình.Thích hợp cho những ai đam mê về công nghệ thông tin,tìm hiểu về bảo mật và lập trình.
Advanced Programming in the UNIX® Environment: Second Edition By W. Richard Stevens, Stephen A. Rago Publisher: Addison Wesley Professional Pub Date: June 17, 2005 ISBN: 0201433079 Pages: 960 T able of C ontents | Index "Stephen Rago's update is a long overdue benefit to the community of professionals using the versatile family of UNIX and UNIX-like operating environments. It removes obsolescence and includes newer developments. It also thoroughly updates the context of all topics, examples, and applications to recent releases of popular implementations of UNIX and UNIX-like environments. And yet, it does all this while retaining the style and taste of the original classic." Mukesh Kacker, cofounder and former CTO of Pronto Networks, Inc."One of the essential classics of UNIX programming." Eric S. Raymond, author of The Art of UNIX Programming"This is the definitive reference book for any serious or professional UNIX systems programmer. Rago has updated and extended the classic Stevens text while keeping true to the original. The APIs are illuminated by clear examples of their use. He also mentions many of the pitfalls to look out for when programming across different UNIX system implementations and points out how to avoid these pitfalls using relevant standards such as POSIX 1003.1, 2004 edition and the Single UNIX Specification, Version 3." Andrew Josey, Director, Certification, The Open Group, and Chair of the POSIX 1003.1 Working Group"Advanced Programming in the UNIX® Environment, Second Edition, is an essential reference for anyone writing programs for a UNIX system. It's the first book I turn to when I want to understand or re-learn any of the various system interfaces. Stephen Rago has successfully revised this book to incorporate newer operating systems such as GNU/Linux and Apple's OS X while keeping true to the first edition in terms of both readability and usefulness. It will always have a place right next to my computer." Dr. Benjamin Kuperman, Swarthmore CollegePraise for the First Edition"Advanced Programming in the UNIX® Environment is a must-have for any serious C programmer who works under UNIX. Its depth, thoroughness, and clarity of explana-tion are unmatched." UniForum Monthly"Numerous readers recommended Advanced Programming in the UNIX® Environment by W. Richard Stevens (Addison-Wesley), and I'm glad they did; I hadn't even heard of this book, and it's been out since 1992. I just got my hands on a copy, and the first few chapters have been fascinating." Open Systems Today"A much more readable and detailed treatment of UNIX internals can be found in Advanced Programming in the UNIX® Environment by W. Richard Stevens (Addison-Wesley). This book includes lots of realistic examples, and I find it quite helpful when I have systems programming tasks to do." RS/Magazine"This is the definitive reference book for any serious or professional UNIX systems programmer. Rago has updated and extended the original Stevens classic while keeping true to the original." Andrew Josey, Director, Certification, The Open Group, and Chair of the POSIX 1003.1 Working GroupFor over a decade, serious C programmers have relied on one book for practical, in-depth knowledge of the programming interfaces that drive the UNIX and Linux kernels: W. Richard Stevens' Advanced Programming in the UNIX® Environment. Now, Stevens' colleague Stephen Rago has thoroughly updated this classic to reflect the latest technical advances and add support for today's leading UNIX and Linux platforms.Rago carefully retains the spirit and approach that made this book a classic. Building on Stevens' work, he begins with basic topics such as files, directories, and processes, carefully laying the groundwork for understanding more advanced techniques, such as signal handling and terminal I/O.Substantial new material includes chapters on threads and multithreaded programming, using the socket interface to drive interprocess communication (IPC), and extensive coverage of the interfaces added to the latest version of the POSIX.1 standard. Nearly all examples have been tested on four of today's most widely used Page 1 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html UNIX/Linux platforms: FreeBSD 5.2.1; the Linux 2.4.22 kernel; Solaris 9; and Darwin 7.4.0, the FreeBSD/Mach hybrid underlying Apple's Mac OS X 10.3.As in the first edition, you'll learn through example, including more than 10,000 lines of downloadable, ANSI C source code. More than 400 system calls and functions are demonstrated with concise, complete programs that clearly illustrate their usage, arguments, and return values. To tie together what you've learned, the book presents several chapter-length case studies, each fully updated for contemporary environments.Advanced Programming in the UNIX® Environment has helped a generation of programmers write code with exceptional power, performance, and reliability. Now updated for today's UNIX/Linux systems, this second edition will be even more indispensable. Page 2 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Advanced Programming in the UNIX® Environment: Second Edition By W. Richard Stevens, Stephen A. Rago Publisher: Addison Wesley Professional Pub Date: June 17, 2005 ISBN: 0201433079 Pages: 960 T able of C ontents | Index Copyright Praise for Advanced Programming in the UNIX® Environment, Second Edition Praise for the First Edition Addison-Wesley Professional Computing Series Foreword Preface Introduction Changes from the First Edition Acknowledgments Preface to the First Edition Introduction Unix Standards Organization of the Book Examples in the Text Systems Used to Test the Examples Acknowledgments Chapter 1. UNIX System Overview Section 1.1. Introduction Section 1.2. UNIX Architecture Section 1.3. Logging In Section 1.4. Files and Directories Section 1.5. Input and Output Section 1.6. Programs and Processes Section 1.7. Error Handling Section 1.8. User Identification Section 1.9. Signals Section 1.10. Time Values Section 1.11. System Calls and Library Functions Section 1.12. Summary Exercises Chapter 2. UNIX Standardization and Implementations Section 2.1. Introduction Section 2.2. UNIX Standardization Section 2.3. UNIX System Implementations Section 2.4. Relationship of Standards and Implementations Section 2.5. Limits Section 2.6. Options Section 2.7. Feature Test Macros Section 2.8. Primitive System Data Types Section 2.9. Conflicts Between Standards Section 2.10. Summary Exercises Chapter 3. File I/O Section 3.1. Introduction Section 3.2. File Descriptors Section 3.3. open Function Section 3.4. creat Function Section 3.5. close Function Page 3 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Section 3.6. lseek Function Section 3.7. read Function Section 3.8. write Function Section 3.9. I/O Efficiency Section 3.10. File Sharing Section 3.11. Atomic Operations Section 3.12. dup and dup2 Functions Section 3.13. sync, fsync, and fdatasync Functions Section 3.14. fcntl Function Section 3.15. ioctl Function Section 3.16. /dev/fd Section 3.17. Summary Exercises Chapter 4. Files and Directories Section 4.1. Introduction Section 4.2. stat, fstat, and lstat Functions Section 4.3. File Types Section 4.4. Set-User-ID and Set-Group-ID Section 4.5. File Access Permissions Section 4.6. Ownership of New Files and Directories Section 4.7. access Function Section 4.8. umask Function Section 4.9. chmod and fchmod Functions Section 4.10. Sticky Bit Section 4.11. chown, fchown, and lchown Functions Section 4.12. File Size Section 4.13. File Truncation Section 4.14. File Systems Section 4.15. link, unlink, remove, and rename Functions Section 4.16. Symbolic Links Section 4.17. symlink and readlink Functions Section 4.18. File Times Section 4.19. utime Function Section 4.20. mkdir and rmdir Functions Section 4.21. Reading Directories Section 4.22. chdir, fchdir, and getcwd Functions Section 4.23. Device Special Files Section 4.24. Summary of File Access Permission Bits Section 4.25. Summary Exercises Chapter 5. Standard I/O Library Section 5.1. Introduction Section 5.2. Streams and FILE Objects Section 5.3. Standard Input, Standard Output, and Standard Error Section 5.4. Buffering Section 5.5. Opening a Stream Section 5.6. Reading and Writing a Stream Section 5.7. Line-at-a-Time I/O Section 5.8. Standard I/O Efficiency Section 5.9. Binary I/O Section 5.10. Positioning a Stream Section 5.11. Formatted I/O Section 5.12. Implementation Details Section 5.13. Temporary Files Section 5.14. Alternatives to Standard I/O Section 5.15. Summary Exercises Chapter 6. System Data Files and Information Section 6.1. Introduction Section 6.2. Password File Page 4 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Section 6.3. Shadow Passwords Section 6.4. Group File Section 6.5. Supplementary Group IDs Section 6.6. Implementation Differences Section 6.7. Other Data Files Section 6.8. Login Accounting Section 6.9. System Identification Section 6.10. Time and Date Routines Section 6.11. Summary Exercises Chapter 7. Process Environment Section 7.1. Introduction Section 7.2. main Function Section 7.3. Process Termination Section 7.4. Command-Line Arguments Section 7.5. Environment List Section 7.6. Memory Layout of a C Program Section 7.7. Shared Libraries Section 7.8. Memory Allocation Section 7.9. Environment Variables Section 7.10. setjmp and longjmp Functions Section 7.11. getrlimit and setrlimit Functions Section 7.12. Summary Exercises Chapter 8. Process Control Section 8.1. Introduction Section 8.2. Process Identifiers Section 8.3. fork Function Section 8.4. vfork Function Section 8.5. exit Functions Section 8.6. wait and waitpid Functions Section 8.7. waitid Function Section 8.8. wait3 and wait4 Functions Section 8.9. Race Conditions Section 8.10. exec Functions Section 8.11. Changing User IDs and Group IDs Section 8.12. Interpreter Files Section 8.13. system Function Section 8.14. Process Accounting Section 8.15. User Identification Section 8.16. Process Times Section 8.17. Summary Exercises Chapter 9. Process Relationships Section 9.1. Introduction Section 9.2. Terminal Logins Section 9.3. Network Logins Section 9.4. Process Groups Section 9.5. Sessions Section 9.6. Controlling Terminal Section 9.7. tcgetpgrp, tcsetpgrp, and tcgetsid Functions Section 9.8. Job Control Section 9.9. Shell Execution of Programs Section 9.10. Orphaned Process Groups Section 9.11. FreeBSD Implementation Section 9.12. Summary Exercises Chapter 10. Signals Section 10.1. Introduction Section 10.2. Signal Concepts Page 5 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Section 10.3. signal Function Section 10.4. Unreliable Signals Section 10.5. Interrupted System Calls Section 10.6. Reentrant Functions Section 10.7. SIGCLD Semantics Section 10.8. Reliable-Signal Terminology and Semantics Section 10.9. kill and raise Functions Section 10.10. alarm and pause Functions Section 10.11. Signal Sets Section 10.12. sigprocmask Function Section 10.13. sigpending Function Section 10.14. sigaction Function Section 10.15. sigsetjmp and siglongjmp Functions Section 10.16. sigsuspend Function Section 10.17. abort Function Section 10.18. system Function Section 10.19. sleep Function Section 10.20. Job-Control Signals Section 10.21. Additional Features Section 10.22. Summary Exercises Chapter 11. Threads Section 11.1. Introduction Section 11.2. Thread Concepts Section 11.3. Thread Identification Section 11.4. Thread Creation Section 11.5. Thread Termination Section 11.6. Thread Synchronization Section 11.7. Summary Exercises Chapter 12. Thread Control Section 12.1. Introduction Section 12.2. Thread Limits Section 12.3. Thread Attributes Section 12.4. Synchronization Attributes Section 12.5. Reentrancy Section 12.6. Thread-Specific Data Section 12.7. Cancel Options Section 12.8. Threads and Signals Section 12.9. Threads and fork Section 12.10. Threads and I/O Section 12.11. Summary Exercises Chapter 13. Daemon Processes Section 13.1. Introduction Section 13.2. Daemon Characteristics Section 13.3. Coding Rules Section 13.4. Error Logging Section 13.5. Single-Instance Daemons Section 13.6. Daemon Conventions Section 13.7. ClientServer Model Section 13.8. Summary Exercises Chapter 14. Advanced I/O Section 14.1. Introduction Section 14.2. Nonblocking I/O Section 14.3. Record Locking Section 14.4. STREAMS Section 14.5. I/O Multiplexing Section 14.6. Asynchronous I/O Page 6 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Section 14.7. readv and writev Functions Section 14.8. readn and writen Functions Section 14.9. Memory-Mapped I/O Section 14.10. Summary Exercises Chapter 15. Interprocess Communication Section 15.1. Introduction Section 15.2. Pipes Section 15.3. popen and pclose Functions Section 15.4. Coprocesses Section 15.5. FIFOs Section 15.6. XSI IPC Section 15.7. Message Queues Section 15.8. Semaphores Section 15.9. Shared Memory Section 15.10. ClientServer Properties Section 15.11. Summary Exercises Chapter 16. Network IPC: Sockets Section 16.1. Introduction Section 16.2. Socket Descriptors Section 16.3. Addressing Section 16.4. Connection Establishment Section 16.5. Data Transfer Section 16.6. Socket Options Section 16.7. Out-of-Band Data Section 16.8. Nonblocking and Asynchronous I/O Section 16.9. Summary Exercises Chapter 17. Advanced IPC Section 17.1. Introduction Section 17.2. STREAMS-Based Pipes Section 17.3. UNIX Domain Sockets Section 17.4. Passing File Descriptors Section 17.5. An Open Server, Version 1 Section 17.6. An Open Server, Version 2 Section 17.7. Summary Exercises Chapter 18. Terminal I/O Section 18.1. Introduction Section 18.2. Overview Section 18.3. Special Input Characters Section 18.4. Getting and Setting Terminal Attributes Section 18.5. Terminal Option Flags Section 18.6. stty Command Section 18.7. Baud Rate Functions Section 18.8. Line Control Functions Section 18.9. Terminal Identification Section 18.10. Canonical Mode Section 18.11. Noncanonical Mode Section 18.12. Terminal Window Size Section 18.13. termcap, terminfo, and curses Section 18.14. Summary Exercises Chapter 19. Pseudo Terminals Section 19.1. Introduction Section 19.2. Overview Section 19.3. Opening Pseudo-Terminal Devices Section 19.4. pty_fork Function Section 19.5. pty Program Page 7 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Section 19.6. Using the pty Program Section 19.7. Advanced Features Section 19.8. Summary Exercises Chapter 20. A Database Library Section 20.1. Introduction Section 20.2. History Section 20.3. The Library Section 20.4. Implementation Overview Section 20.5. Centralized or Decentralized? Section 20.6. Concurrency Section 20.7. Building the Library Section 20.8. Source Code Section 20.9. Performance Section 20.10. Summary Exercises Chapter 21. Communicating with a Network Printer Section 21.1. Introduction Section 21.2. The Internet Printing Protocol Section 21.3. The Hypertext Transfer Protocol Section 21.4. Printer Spooling Section 21.5. Source Code Section 21.6. Summary Exercises Appendix A. Function Prototypes Appendix B. Miscellaneous Source Code Section B.1. Our Header File B.2 Standard Error Routines Appendix C. Solutions to Selected Exercises Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Chapter 7 Chapter 8 Chapter 9 Chapter 10 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Chapter 17 Chapter 18 Chapter 19 Chapter 20 Chapter 21 Bibliography Index Page 8 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Copyright Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 corpsales@pearsontechgroup.com For sales outside the U.S., please contact: International Sales international@pearsoned.com Visit us on the Web: www.awprofessional.com Library of Congress Cataloging-in-Publication Data: Stevens, W. Richard. Advanced programming in the Unix environment / W. Richard Stevens, Stephen A. Rago.2nd ed. p. cm. Includes bibliographical references and index. ISBN 0-201-43307-9 (hardcover : alk. paper) 1. Operating systems (Computers) 2. UNIX (Computer file) I. Rago, Stephen A. II. Title. QA76.76.O63S754 2005 005.4'32dc22 2005007943 Copyright © 2005 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc. Rights and Contracts Department One Lake Street Page 9 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Upper Saddle River, NJ 07458 0-201-43307-9 Text printed in the United States on recycled paper at Courier in Westford, Massachusetts. First printing, June 2005 Dedication To Jeanne Page 10 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html [...]... Standards The proliferation of different versions of Unix during the 1980s has been tempered by the various international standards that were started during the late 1980s These include the ANSI standard for the C programming language, the IEEE POSIX family (still being developed), and the X/Open portability guide This book also describes these standards But instead of just describing the standards by themselves,... to the First Edition Introduction Unix Standards Organization of the Book Examples in the Text Systems Used to Test the Examples Acknowledgments Page 20 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Introduction This book describes the programming interface to the Unix systemthe system call interface and many of the functions provided in the standard C library It is intended... implementations of UNIX and UNIX- like environments And yet, it does all this while retaining the style and taste of the original classic." Mukesh Kacker, cofounder and former CTO of Pronto Networks, Inc "One of the essential classics of UNIX programming. " Eric S Raymond, author of The Art of UNIX Programming "This is the definitive reference book for any serious or professional UNIX systems programmer... http://www.processtext.com/abcchm.html 1.1 Introduction All operating systems provide services for programs they run Typical services include executing a new program, opening a file, reading a file, allocating a region of memory, getting the current time of day, and so on The focus of this text is to describe the services provided by various versions of the UNIX operating system Describing the UNIX System in a strictly linear fashion,... Bourne-again shell /bin/bash optional • • • C shell /bin/csh link to tcsh link to tcsh link to tcsh • Korn shell /bin/ksh TENEX C shell /bin/tcsh • • • • • The system knows which shell to execute for us from the final field in our entry in the password file The Bourne shell, developed by Steve Bourne at Bell Labs, has been in use since Version 7 and is provided with almost every UNIX system in existence The. .. to update the information presented in this book to reflect these four platforms After Rich wrote Advanced Programming in the UNIX Environment in 1992, I got rid of most of my UNIX programmer's manuals To this day, the two books I keep closest to my desk are a dictionary and a copy of Advanced Programming in the UNIX Environment I hope you find this revision equally useful Page 17 ABC Amber CHM Converter... default shell In fact, /bin/sh is a link to /bin/bash The default user shell in FreeBSD and Mac OS X is the TENEX C shell, but they use the Bourne shell for their administrative shell scripts because the C shell's programming language is notoriously difficult to use Solaris, having its heritage in both BSD and System V, provides all the shells shown in Figure 1.2 Free ports of most of the shells are... structure of information containing all the attributes of a file In Chapter 4, we'll examine all the attributes of a file in great detail We make a distinction between the logical view of a directory entry and the way it is actually stored on disk Most implementations of UNIX file systems don't store attributes in the directory entries themselves, because of the difficulty of keeping them in synch when... is the X/Open Portability Guide, Issue 3, and ANSI C is the ANSI standard for the C programming language POSIX.1 is the IEEE and ISO standard for the interface to a Unix- like system We'll have more to say about these different standards and the various versions of Unix in Sections 2.2 and 2.3 In this text we use the term 4.3+BSD to refer to the Unix system from Berkeley that is somewhere between the. .. Kernighan, Consulting Editor Matthew H Austern, Generic Programming and the STL: Using and Extending the C++ Standard Template Library ® David R Butenhof, Programming with POSIX Threads Brent Callaghan, NFS Illustrated Tom Cargill, C++ Programming Style William R Cheswick/Steven M Bellovin/Aviel D Rubin, Firewalls and Internet Security, Second Edition: Repelling the Wily Hacker ® David A Curry, UNIX System . knowledge of the programming interfaces that drive the UNIX and Linux kernels: W. Richard Stevens' Advanced Programming in the UNIX Environment. . V Network Programming Eric S. Raymond, The Art of UNIX Programming Marc J. Rochkind, Advanced UNIX Programming, Second Edition Curt Schimmel, UNIX ® Systems