Linux Application Development (paperback)

by ;
Edition: 2nd
Format: Paperback
Pub. Date: 2004-11-17
Publisher(s): Addison-Wesley Professional
List Price: $54.99

Rent Book

Select for Price
There was a problem. Please try again later.

New Book

We're Sorry
Sold Out

Used Book

We're Sorry
Sold Out

eBook

We're Sorry
Not Available

How Marketplace Works:

  • This item is offered by an independent seller and not shipped from our warehouse
  • Item details like edition and cover design may differ from our description; see seller's comments before ordering.
  • Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
  • Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
  • Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.

Summary

"The first edition of this book has always been kept within arm's reach of my desk due to the wonderful explanations of all areas of the Linux userspace API. This second edition greatly overshadows the first one, and will replace it." --Greg Kroah-Hartman, Linux kernel programmer Develop Software that Leverages the Full Power of Today's Linux Linux Application Development, Second Edition,is the definitive reference for Linux programmers at all levels of experience, including C programmers moving from other operating systems. Building on their widely praised first edition, leading Linux programmers Michael Johnson and Erik Troan systematically present the key APIs and techniques you need to create robust, secure, efficient software or to port existing code to Linux. This book has been fully updated for the Linux 2.6 kernel, GNU C library version 2.3, the latest POSIX standards, and the Single Unix Specification, Issue 6. Its deep coverage of Linux-specific extensions and features helps you take advantage of the full power of contemporary Linux. Along the way, the authors share insights, tips, and tricks for developers working with any recent Linux distribution, and virtually any version of Unix. Topics include Developing in Linux: understanding the operating system, licensing, and documentation The development environment: compilers, linker and loader, and unique debugging tools System programming: process models, file handling, signal processing, directory operations, and job control Terminals, sockets, timers, virtual consoles, and the Linux console Development libraries: string matching, terminal handling, command-line parsing, authentication, and more Hundreds of downloadable code samples New to this edition The GNU C library (glibc), underlying standards, and test macros Writing secure Linux programs, system daemons, and utilities Significantly expanded coverage of memory debugging, including Valgrind and mpr Greatly improved coverage of regular expressions IPv6 networking coverage, including new system library interfaces for using IPv6 and IPv4 interchangeably Coverage of strace, ltrace, real-time signals, poll and epoll system calls, popt library improvements, Pluggable Authentication Modules (PAM), qdbm, and much more Improved index and glossary, plus line-numbered code examples

Author Biography

Michael K. Johnson is an operating system engineer at Specifix. He was formerly an operating system developer for Red Hat, where he managed the kernel team for three and a half years, and was founding technical leader of the Fedora Project. He occasionally teaches full-day tutorials on Linux application development.

Erik W. Troan, cofounder and Executive VP of Operating Systems at Specifix, was formerly Vice President of Product Engineering at Red Hat, where he was responsible for specifying and building technologies such as RPM, Linux operating systems, the Red Hat Network, high-performance Web servers, and the infrastructure for Red Hat's Web site.



Table of Contents

List of Tables
Code Examples
Preface
Getting Started
History of Linux Development
A Short History of Free Unix Software
Development of Linux
Notional Lineage of Unix Systems
Linux Lineage
Licenses and Copyright
Copyright
Licensing
Free Software Licenses
Online System Documentation
The man Pages
The Info Pages
Other Documentation
Development Tools and Environment
Development Tools
Editors
Make
The GNU Debugger
Tracing Program Actions
gcc Options and Extensions
gcc Options
Header Files
The GNU C Library
Feature Selection
POSIX Interfaces
Compatibility
Memory Debugging Tools
Buggy Code
Memory-Checking Tools Included in glibc
Finding Memory Leaks with mpr
Investigating Memory Errors with Valgrind
Electric Fence
Creating and Using Libraries
Static Libraries
Shared Libraries
Designing Shared Libraries
Building Shared Libraries
Installing Shared Libraries
Using Shared Libraries
Linux System Environment
The Process Environment
Understanding System Calls
Finding Header and Library Files
System Programming
The Process Model
Defining a Process
Process Attributes
Process Information
Process Primitives
Simple Children
Sessions and Process Groups
Introduction to ladsh
Creating Clones
Simple File Handling
The File Mode
Basic File Operations
Querying and Changing Inode Information
Manipulating Directory Entries
Manipulating File Descriptors
Creating Unnamed Pipes
Adding Redirection to ladsh
Signal Processing
Signal Concepts
The Linux (and POSIX) Signal API
Available Signals
Writing Signal Handlers
Reopening Log Files
Real-Time Signals
Learning About a Signal
Advanced File Handling
Input and Output Multiplexing
Memory Mapping
File Locking
Alternatives to read() and write()
Directory Operations
The Current Working Directory
Changing the Root Directory
Creating and Removing Directories
Reading a Directory's Contents
File Name Globbing
Adding Directories and Globbing to ladsh
Walking File System Trees
Directory Change Notification
Job Control
Job Control Basics
Job Control in ladsh
Terminals and Pseudo Terminals
tty Operations
termios Overview
termios Examples
termios Debugging
termios Reference
Pseudo ttys
Networking with Sockets
Protocol Support
Utility Functions
Basic Socket Operations
Unix Domain Sockets
Networking Machines with TCP/IP
Using UDP Datagrams
Socket Errors
Legacy Networking Functions
Time
Telling Time and Dates
Using Timers
Random Numbers
Pseudo-Random Numbers
Cryptography and Random Numbers
Programming Virtual Consoles
Getting Started
Beeping
Determining Whether the Terminal Is a VC
Finding the Current VC
Managing VC Switching
Example: The open Command
The Linux Console
Capability Databases
Glyphs, Charac
Table of Contents provided by Publisher. All Rights Reserved.

An electronic version of this book is available through VitalSource.

This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.

By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.

Digital License

You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.

More details can be found here.

A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.

Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.

Please view the compatibility matrix prior to purchase.