Linux Application Development (paperback) - Michael K. Johnson, Erik W. Troan

Linux Application Development (paperback)

Buch | Softcover
736 Seiten
2008 | 2nd edition
Addison-Wesley Educational Publishers Inc (Verlag)
978-0-321-56322-4 (ISBN)
51,25 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
"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

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.

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.

Erscheint lt. Verlag 14.5.2008
Verlagsort New Jersey
Sprache englisch
Maße 151 x 242 mm
Gewicht 1300 g
Themenwelt Informatik Betriebssysteme / Server Unix / Linux
ISBN-10 0-321-56322-0 / 0321563220
ISBN-13 978-0-321-56322-4 / 9780321563224
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Die wichtigen Befehle

von Daniel J. Barrett

Buch | Softcover (2024)
O'Reilly (Verlag)
16,90
das umfassende Handbuch

von Dirk Deimeke; Daniel van Soest; Stefan Kania

Buch | Hardcover (2023)
Rheinwerk (Verlag)
69,90
das umfassende Handbuch

von Michael Kofler

Buch | Hardcover (2023)
Rheinwerk (Verlag)
49,90