Always Learning

Linux Programming by Example: The Fundamentals
Arnold Robbins

ISBN-10: 0131429647
ISBN-13:  9780131429642

Publisher:  Prentice Hall
Copyright:  2004
Format:  Paper; 720 pp
Published:  04/12/2004
Status: Instock


Customers outside the U.S., click here.


Print this content

In this section:


Description

Appropriate for all entry-level Linux and Unix programming courses.

This book teaches Linux programming in one of the most effective ways possible: by showing and explaining well-written programs. Arnold Robbins focuses on the fundamental Linux system call APIs that form the core of any significant program, and presents code from production programs that Linux and Unix users already work with every day, ranging from Unix source code to GNU utilities such as ls and cp. The topics and APIs covered include: memory management; file I/O, file meta-information, processes, users and groups, sorting, argument parsing, extended interfaces, internationalization, debugging, and more. Robbins stresses fundamental programming principles, and often presents both higher-level and lower-level approaches to key tasks, helping students understand how things work “under the hood.” He also demonstrates how to address the real-world issues that arise in writing software—notably performance, portability, and robustness. All code examples are downloadable from a companion Web site, and most apply equally well to both Linux and Unix. Where differences exist, the author notes them. Linux Programming by Example: The Fundamentals is intended for students who already understand the basics of C and/or C++.


Features

The perfect introduction to Linux programming fundamentals for developers new to Linux--ideal for Windows programmers making the switch!

° An example-driven introduction to the core Linux programming interfaces that EVERY Linux developer needs to master.

° Examples are "real-world," not canned, taken from the ACTUAL source code to popular GNU Linux programs.

° Written by the best-selling author of UNIX in a Nutshell and other popular O'Reilly books.


Table of Contents



Preface.

Audience. What You Will Learn. Small Is Beautiful: Unix Programs. Standards. Features and Power: GNU Programs. Chapter Summary. Typographical Conventions. Where To Get Unix and GNU Source Code. Unix Code. GNU Code.



Acknowledgments.


1. Introduction.

The Linux/Unix File Model. The Linux/Unix Process Model. Standard C vs. Original C. Why GNU Programs Are Better. Portability Revisited. Suggested Reading. Summary. Exercises.



2. Arguments, Options, and the Environment

Option and Argument Conventions. Basic Command Line Processing. Option Parsing: getopt() and getopt_long(). The Environment. Summary. Exercises.



3. User-Level Memory Management

Linux/Unix Address Space. Allocating Memory. Summary. Exercises.



4. Files and File I/O.

Introduction. Basic Program Structure. Determining What Went Wrong. Input and Output. Random Access: Moving Around Within A File. Creating Files. Forcing Data to Disk. Setting File Length. Summary. Exercises.



5. Directories and File Metadata.

Directory Contents. Creating and Removing Directories. Reading Directories. File Types and Information. Changing Ownership, Permission, and Modification Times. Summary. Exercises.



6. General Library Interfaces - Part 1

Times and Dates. Sorting and Searching. User and Group Names. Terminals: isatty(). Suggested Reading. Summary. Exercises.



7. Putting It All Together: ls.

V7 ls Options. The V7 ls Code. Summary. Exercises.



8. Filesystems and Directory Walks.

Mounting and Unmounting Filesystems. Filesystem Administration Files. Retrieving Per-filesystem Information. Moving Around In The File Hierarchy. Doing A File Tree Walk: GNU du. Changing The Root Directory: chroot(). Summary. Exercises.



9. Process Management and Pipes.

Process Creation and Management. Process Groups. Basic Interprocess Communication: Pipes and FIFOs. File Descriptor Management. Example: Two Way Pipes In gawk. Suggested Reading. Summary. Exercises.



10. Signals.

Introduction. Signal Actions. Standard C Signals: signal() and raise(). Signal Handlers In Action. The System V Release 3 Signal APIs: sigset() et al. POSIX Signals. Signals For Interprocess Communication. Important Special Purpose Signals. Signals Across fork() and exec(). Summary. Exercises.



11. User and Group ID Numbers and Permissions.

Introduction. Retrieving User and Group Ids. Checking As The Real User: access(). GLIBC Only: Checking As The E_ective User: euidaccess(). Extra Permission Bits For Directories. Setting Real and E_ective Ids. Linux Only: getresuid() and setresuid(). Setuid root: A Security Minefield. Suggested Reading. Summary. Exercises.



12. General Library Interfaces - Part 2.

Stating Assertions: assert(). Low-level Memory: The memXXX() Functions. Temporary Files. Committing Suicide: abort(). Non-local Gotos. Pseudorandom Numbers. Metacharacter Expansions. Regular Expressions. Suggested Reading. Summary. Exercises.



13. Internationalization and Localization.

Locales and the C Library. Dynamic Translation of Program Messages. Can You Spell That For Me Please? Suggested Reading. Summary. Exercises.



14. Extended Interfaces.

Allocating Aligned Memory: posix_memalign() and memalign(). Locking Files. More Precise Times. Advanced Searching With Binary Trees. Summary. Exercises



15. Debugging.

What To Do First? Compiling For Debugging. GDB Basics. Programming For Debugging. Debugging Tools. Software Testing. Debugging Rules. Suggested Reading. Summary. Exercises.



16. Tying It Together - A Project.

Project Description. Suggested Reading.



Appendix A. Teach Yourself Programming in Ten Years.

Why is everyone in such a rush? Teach Yourself Programming in Ten Years. References. Answers. Footnotes.



Appendix B. Caldera Ancient UNIX License.


Appendix C. GNU General Public License.


Preamble.


Terms and Conditions for Copying, Distribution and Modification.


How to Apply These Terms to Your New Programs.


Example Use.


Index.



Back to top

Print this content

In this section:


Sample Chapter

View a Sample Chapter PDF:/samplechapter/0131429647.pdf


Author Bios

Arnold Robbins is an Atlanta native, currently living is Israel. He is a happy husband, and the proud father of four wonderful children. He works as a professional software engineer and technical author. In his non-copious spare time, he is also an amateur Talmudist, both Babylonian and Jerusalem.

Arnold has been working with Unix systems of various sorts, GNU/Linux systems, C, C++ and all the other major Unix tools since 1980.

As a long-time volunteer for the GNU project, he has been the maintainer of GAWK (GNU Awk) for many years. Arnold was on the balloting committee for the original POSIX Shell and Utilities standard in the early 1990s and helped to shape the POSIX standard for awk (and a few other things).


Backcover Copy

“This is an excellent introduction to Linux programming. The topics are well chosen and lucidly presented. I learned things myself, especially about internationalization, and I’ve been at this for quite a while.”

—Chet Ramey, Coauthor and Maintainer of the Bash shell

“This is a good introduction to Linux programming. Arnold’s technique of showing how experienced programmers use the Linux programming interfaces is a nice touch, much more useful than the canned programming examples found in most books.”

—Ulrich Drepper, Project Lead, GNU C library

“A gentle yet thorough introduction to the art of UNIX system programming, Linux Programming by Example uses code from a wide range of familiar programs to illustrate each concept it teaches. Readers will enjoy an interesting mix of in-depth API descriptions and portability guidelines, and will come away well prepared to begin reading and writing systems applications. Heartily recommended.”

—Jim Meyering, Coauthor and Maintainer of the GNU Core Utility Programs

Learn Linux® programming, hands-on… from real source code

This book teaches Linux programming in the most effective way possible: by showing and explaining well-written programs. Drawing from both V7 Unix® and current GNU source code, Arnold Robbins focuses on the fundamental system call APIs at the core of any significant program, presenting examples from programs that Linux/Unix users already use every day. Gradually, one step at a time, Robbins teaches both high-level principles and “under the hood” techniques. Along the way, he carefully addresses real-world issues like performance, portability, and robustness. Coverage includes:

  • Memory management
  • File I/O
  • File metadata
  • Processes
  • Users and groups
  • Sorting and searching
  • Argument parsing
  • Extended interfaces
  • Signals
  • Internationalization
  • Debugging
  • And more…

Just learning to program? Switching from Windows®? Already developing with Linux but interested in exploring the system call interface further? No matter which, quickly and directly, this book will help you master the fundamentals needed to build serious Linux software.

Companion Web Sites, authors.phptr.com/robbins and www.linux-by-example.com, include all code examples.

Back to top

Print this content

This product is a member of the following series. Click on the series name to see the full list of products in the series.

Back to top

Log in to the Instructor Resource Center

Login name: 

  Password: 

Forgot login/password?  |  Need to redeem an access code?

        

Instructor Resource Center File Download

This work is protected by local and international copyright laws and is provided solely for the use of instructors in teaching their courses and assessing student learning. Dissemination or sale of any part of this work (including on the World Wide Web) will destroy the integrity of the work and is not permitted. The work and materials from this site should never be made available to students except by instructors using the accompanying text in their classes. All recipients of this work are expected to abide by these restrictions and to honor the intended pedagogical purposes and the needs of other instructors who rely on these materials.

Cancel     I accept, proceed with download

Print this content

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.

Back to top