Home > Store > Operating Systems, Server > Linux/UNIX/Open Source

Linux Application Development (paperback), 2nd Edition

Register your product to gain access to bonus material or receive a coupon.

Linux Application Development (paperback), 2nd Edition

Book

  • Your Price: $43.99
  • List Price: $54.99
  • Usually ships in 24 hours.

About

Features

  • 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
  • Description

    • Copyright 2005
    • Dimensions: 7-3/8 X 9-1/8
    • Pages: 736
    • Edition: 2nd
    • Book
    • ISBN-10: 0-321-56322-0
    • ISBN-13: 978-0-321-56322-4

    "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


    Sample Content

    Table of Contents

    List of Tables.

    Code Examples.

    Preface.

    I. GETTING STARTED.

    1. History of Linux Development.

        A Short History of Free Unix Software.

        Development of Linux.

        Notional Lineage of Unix Systems.

        Linux Lineage.

    2. Licenses and Copyright.

        Copyright.

        Licensing.

        Free Software Licenses.

    3. Online System Documentation.

        The man Pages.

        The Info Pages.

        Other Documentation.

    II. DEVELOPMENT TOOLS AND ENVIRONMENT.

    4. Development Tools.

        Editors.

        Make.

        The GNU Debugger.

        Tracing Program Actions.

    5. gcc Options and Extensions.

        gcc Options.

        Header Files.

    6. The GNU C Library.

        Feature Selection.

        POSIX Interfaces.

        Compatibility.

    7. Memory Debugging Tools.

        Buggy Code.

        Memory-Checking Tools Included in glibc.

        Finding Memory Leaks with mpr.

        Investigating Memory Errors with Valgrind.

        Electric Fence.

    8. Creating and Using Libraries.

        Static Libraries.

        Shared Libraries.

        Designing Shared Libraries.

        Building Shared Libraries.

        Installing Shared Libraries.

        Using Shared Libraries.

    9. Linux System Environment.

        The Process Environment.

        Understanding System Calls.

        Finding Header and Library Files.

    III. SYSTEM PROGRAMMING.

    10. The Process Model.

        Defining a Process.

        Process Attributes.

        Process Information.

        Process Primitives.

        Simple Children.

        Sessions and Process Groups.

        Introduction to l a d s h.

        Creating Clones.

    11. 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 l a d s h.

    12. 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.

    13. Advanced File Handling.

        Input and Output Multiplexing.

        Memory Mapping.

        File Locking.

        Alternatives to read() and write().

    14. 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.

    15. Job Control.

        Job Control Basics.

        Job Control in ladsh.

    16. Terminals and Pseudo Terminals.

        tty Operations.

        termios Overview.

        termios Examples.

        termios Debugging.

        termios Reference.

        Pseudo ttys.

    17. 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.

    18. Time.

        Telling Time and Dates.

        Using Timers.

    19. Random Numbers.

        Pseudo-Random Numbers.

        Cryptography and Random Numbers.

    20. Programming Virtual Consoles.

        Getting Started.

        Beeping.

        Determining Whether the Terminal Is a VC.

        Finding the Current VC.

        Managing VC Switching.

        Example: The open Command.

    21. The Linux Console.

        Capability Databases.

        Glyphs, Characters, and Maps.

        Linux Console Capabilities.

        Direct Screen Writing.

    22. Writing Secure Programs.

        When Security Matters.

        Minimizing the Opportunity for Attack.

        Common Security Holes.

        Running as a Daemon.

    IV. DEVELOPMENT LIBRARIES.

    23. String Matching.

        Globbing Arbitrary Strings.

        Regular Expressions.

    24. Terminal Handling with S-Lang.

        Input Handling.

        Output Handling.

    25. A Hashed Database Library.

        Overview.

        Basic Operations.

        Reading Records.

        Modifying the Database.

        Example.

    26. Parsing Command-Line Options.

        The Option Table.

        Using the Option Table.

        Using Callbacks.

        Error Handling.

        Option Aliasing.

        Parsing Argument Strings.

        Handling Extra Arguments.

        Sample Application.

    27. Dynamic Loading at Run Time.

        The dl Interface.

    28. User Identification and Authentication.

        ID-to-Name Translation.

        Pluggable Authentication Modules.

    APPENDICES.

    Appendix A. Header Files.

    Appendix B. ladsh Source Code.

    Glossary.

    Bibliography.

    Index.

    Updates

    Submit Errata

    More Information

    Unlimited one-month access with your purchase
    Free Safari Membership