did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321525949

Advanced Programming in the UNIX Environment Paperback Edition

by ;
  • ISBN13:

    9780321525949

  • ISBN10:

    0321525949

  • Edition: 2nd
  • Format: Paperback
  • Copyright: 2005-06-17
  • Publisher: Addison-Wesley Professional
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $69.99

Summary

"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 Group For 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 UNIXreg; 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 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 UNIXreg; Environmenthas 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.

Author Biography

The late W. Richard Stevens was the acclaimed author of UNIX® Network Programming, Volumes 1 and 2, widely recognized as the classic texts in UNIX networking; as well as TCP/IP Illustrated, Volumes 1-3, and the first edition of this book.

Stephen A. Rago is the author of UNIX® System V Network Programming (Addison-Wesley, 1993). Rago was one of the Bell Laboratories developers who built UNIX System V, Release 4. He served as a technical reviewer for the first edition of Advanced Programming in the UNIX® Environment. Rago currently works as a manager at EMC, specializing in file servers and file systems.

Table of Contents

Foreword
Preface
Preface to the First Edition
UNIX System Overview
Introduction
UNIX Architecture
Logging In Files and Directories
Input and Output
Programs and Processes
Error Handling
User Identification
Signals
Time Values
System Calls and Library Functions
Summary
UNIX Standardization and Implementations
Introduction
UNIX Standardization
UNIX System Implementations
Relationship of Standards and Implementations
Limits
Options
Feature Test Macros
Primitive System Data Types
Conflicts Between Standards
Summary
File I/O
Introduction
File Descriptors
open Function
creat Function
closeFunction
lseek Function
read Function
write Function
I/O Efficiency
File Sharing
Atomic Operations
dup and dup2 Functions
sync, fsync, and fdatasync Functions
fcntl Function
ioctl Function
/dev/fd
Summary
Files and Directories
Introduction
stat, fstat, and lstat Functions
File Types
Set-User-ID and Set-Group-ID
File Access Per missions
Ownership of New Files and Directories
access Function
umask Function
chmodand fchmod Functions
Sticky Bit
chown, fchown, and lchown Functions
File Size
File Truncation
File Systems
link, unlink, remove, and rename Functions
Symbolic Links
symlinkand readlink Functions
File Times
utime Function
mkdirand rmdir Functions
Reading Director ies
chdir, fchdir, and getcwd Functions
Device Special Files
Summary of File Access Per mission Bits
Summary
Standard I/O Library
Introduction
Streams and FILE Objects
Standard Input, Standard Output, and Standard Error
Buffering
Opening a Stream
Reading and Writing a Stream
Line-at-a-Time I/O
Standard I/O Efficiency
Binary I/O
Positioning a Stream
Formatted I/O
Implementation Details
Temporary Files
Alternatives to Standard I/O
Summary
System Data Files and Information
Introduction
Password File
Shadow Passwords
Group File
Supplementary Group Ids
Implementation Differences
Other Data Files
Login Accounting
System Identification
Time and Date Routines
Summary
Process Environment
Introduction
main Function
Process Termination
Command-Line Arguments
Environment List
Memory Layout of a C Program
Shared Libraries
Memory Allocation
Environment Variables
setjmp and longjmp Functions
getrlimit and setrlimit Functions
Summary
Process Control
Introduction
Process Identifiers
fork Function
vfork Function
exit Functions
waitand waitpid Functions
waitid Function
wait3and wait4Functions
Race Conditions
exec Functions
Changing User IDs and Group IDs
Interpreter Files
system Function
Process Accounting
User Identification
Process Times
Summary
Process Relationships
Introduction
Terminal Logins
Network Logins
Process Groups
Sessions
Controlling Terminal tcgetpgrp, tcsetpgrp, and tcgetsid Functions
Job Control
Shell Execution of Programs
Orphaned Process Groups
FreeBSD Implementation
Summary
Signals
Introduction
Signal Concepts
signal Function
Unreliable Signals
Interrupted System Calls
Reentrant Functions
SIGCLD Semantics
Reliable-Signal Terminology and Semantics
killand raise Functions
alarmand pause Functions
Signal Sets
sigprocmask Function
sigpending Function
sigaction Function
sigsetjmp and siglongjmp Functions
sigsuspend Function
abort Function
system Function
sleep Function
Job-Control Signals
Additional Features
Summary
Threads
Introduction
Thread Concepts
Thread Identification
Thread Creation
Thread Termination
Thread Synchronization
Summary
Thread Control
Introduction
Thread Limits
hread Attributes
Synchronization Attributes
Reentrancy
Thread-Specific Data
Cancel Options
Threads and Signals
Threads and fork
Threads and I/O
Summary
Daemon Processes
Introduction
Daemon Characteristics
Coding Rules
Error Logging
Single-Instance Daemons
Daemon Conventions
Client-Server Model
Summary
Advanced I/O
Introduction
Nonblocking I/O
Record Locking
Streams
I/O Multiplexing
2 poll Function
Asynchronous I/O
readv and writev Functions
readn and written Functions
Memory-Mapped I/O
Summary
Interprocess Communication
Introduction
Pipes
popen and pclose Functions
Coprocesses
FIFOs
XSI IPC
Message Queues
Semaphores
Shared Memory
Client-Server Properties
Summary
Network IPC: Sockets
Introduction
Socket Descriptors
Addressing
Connection Establishment
Data Transfer
Socket Options
Out-of-Band Data
Nonblocking and Asynchronous I/O
Summary
Advanced IPC
Introduction
STREAMS-Based Pipes
Unique Connections
Passing File Descriptors
An Open Server, Version 1
An Open Server, Version 2
Summary
Terminal I/O
Introduction
Overview
Special Input Characters
Getting and Setting Terminal Attributes
Terminal Option Flags
stty Command
Baud Rate Functions
Line Control Functions
Terminal Identification
Canonical Mode
Noncanonical Mode
Terminal Window Size termcap, terminfo, and curses
Summary
Pseudo Terminals
Introduction
Overview
Opening Pseudo-Terminal Devices
pty_fork Function
pty Program
Using the pty Program
Advanced Features
Summary
A Database Library
Introduction
History
The Library
Implementation Overview
Centralized or Decentralized?
Concurrency
Building the Library
Source Code
Performance
Summary
Communicating with a Network Printer
Introduction
The Inter net Printing Protocol
The Hypertext Transfer Protocol
Printer Spooling
Source Code
Summary
Function Prototypes
Miscellaneous Source Code
Our Header File
Standard Error Routines
Solutions to Selected Exercises
Bibliography
Index
Table of Contents provided by Publisher. All Rights Reserved.

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Excerpts

Introduction Rich Stevens and I first met through an e-mail exchange when I reported a typographical error in his first book,UNIX Network Programming. He used to kid me about being the person to send him his first errata notice for the book. Until his death in 1999, we exchanged e-mail irregularly, usually when one of us had a question we thought the other might be able to answer. We met for dinner at USENIX conferences and when Rich was teaching in the area. Rich Stevens was a friend who always conducted himself as a gentleman. When I wroteUNIX System V Network Programmingin 1993, I intended it to be a System V version of Rich's UNIX Network Programming. As was his nature, Rich gladly reviewed chapters for me, and treated me not as a competitor, but as a colleague. We often talked about collaborating on a STREAMS version of his TCP/IP Illustrated book. Had events been different, we might have actually done it, but since Rich is no longer with us, revisingAdvanced Programming in the UNIX Environmentis the closest I'll ever get to writing a book with him.When the editors at Addison-Wesley told me that they wanted to update Rich's book, I thought that there wouldn't be too much to change. Even after 13 years, Rich's work still holds up well. But the UNIX industry is vastly different today from what it was when the book was first published. The System V variants are slowly being replaced by Linux. The major system vendors that ship their hardware with their own versions of the UNIX System have either made Linux ports available or announced support for Linux. Solaris is perhaps the last descendant of UNIX System V Release 4 with any appreciable market share. After 4.4BSD was released, the Computing Science Research Group (CSRG) from the University of California at Berkeley decided to put an end to its development of the UNIX operating system, but several different groups of volunteers still maintain publicly available versions. The introduction of Linux, supported by thousands of volunteers, has made it possible for anyone with a computer to run an operating system similar to the UNIX System, with freely available source code for the newest hardware devices. The success of Linux is something of a curiosity, given that several free BSD alternatives are readily available. Continuing its trend as an innovative company, Apple Computer abandoned its old Mac operating system and replaced it with one based on Mach and FreeBSD. Thus, I've tried to update the information presented in this book to reflect these four platforms. After Rich wroteAdvanced Programming in the UNIX Environmentin 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 ofAdvanced Programming in the UNIX Environment. I hope you find this revision equally useful. Changes from the First Edition Rich's work holds up well. I've tried not to change his original vision for this book, but a lot has happened in 13 years. This is especially true with the standards that affect the UNIX programming interface. Throughout the book, I've updated interfaces that have changed from the ongoing efforts in standards organizations. This is most noticeable in Chapter 2, since its primary topic is standards. The 2001 version of the POSIX.1 standard, which we use in this revision, is much more comprehensive than the 1990 version on which the first edition of this book was based. The 1990 ISO C standard was updated in 1999, and some changes affect the interfaces in the POSIX.1 standard.A lot more interfaces are now covered by the POSIX.1 specification. The base specifications of the Single UNIX Specification (published by The Open Group, formerly X/Open) have been merged with POSIX.1. POSIX.1 now includes several 1003.1 standards and draft standards that were

Rewards Program