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++ |
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.
Table of Contents:
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