Linux Programming by Example introduces new Linux programmers to the core Linux programming interfaces in a gradual, consistent fashion, progressing intuitively from the basic to the more complex. It covers I/O, file metainformation, users and groups, processes, basic interprocess communication (pipes), general purpose APIs, signals, internationalization, and ends with a chapter on debugging Linux programs. Programmers know that the best way to learn about programming is to study well-written programs. This book teaches the fundamental Linux programming interfaces, those that form the core of any significant program, by presenting example code from real-world production programs that Linux users use every day. By looking at concrete programs, its possible not only to see how to use the Linux programming interfaces, but also to examine the real-world issues (performance, portability, robustness) that arise in writing Linux software. This book is the FIRST in a new series of books featuring Arnold Robbins as Series Editor. The books will all be branded "Linux Programming by Example" and cover programming topics for the new Linux programmer and Windows programmers making the switch.
Muu info
Linux Programming by Example introduces new Linux programmers to the core Linux programming interfaces in a gradual, consistent fashion, progressing intuitively from the basic to the more complex. It covers I/O, file metainformation, users and groups, processes, basic interprocess communication (pipes), general purpose APIs, signals, internationalization, and ends with a chapter on debugging Linux programs. Programmers know that the best way to learn about programming is to study well-written programs. This book teaches the fundamental Linux programming interfaces, those that form the core of any significant program, by presenting example code from real-world production programs that Linux users use every day. By looking at concrete programs, its possible not only to see how to use the Linux programming interfaces, but also to examine the real-world issues (performance, portability, robustness) that arise in writing Linux software. This book is the FIRST in a new series of books featuring Arnold Robbins as Series Editor. The books will all be branded "Linux Programming by Example" and cover programming topics for the new Linux programmer and Windows programmers making the switch.
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.
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).