Enjoy fast, free delivery, exclusive deals, and award-winning movies & TV shows with Prime
Try Prime
and start saving today with fast, free delivery
Amazon Prime includes:
Fast, FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with Fast, FREE Delivery" below the Add to Cart button.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited Free Two-Day Delivery
- Streaming of thousands of movies and TV shows with limited ads on Prime Video.
- A Kindle book to borrow for free each month - with no due dates
- Listen to over 2 million songs and hundreds of playlists
- Unlimited photo storage with anywhere access
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.
Buy new:
$69.00$69.00
Ships from: Amazon Sold by: Sinaloense
Save with Used - Good
$37.50$37.50
Ships from: Amazon Sold by: Shelby Books.
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Linux System Programming: Talking Directly to the Kernel and C Library 1st Edition
There is a newer edition of this item:
Purchase options and add-ons
This book is about writing software that makes the most effective use of the system you're running on -- code that interfaces directly with the kernel and core system libraries, including the shell, text editor, compiler, debugger, core utilities, and system daemons. The majority of both Unix and Linux code is still written at the system level, and Linux System Programming focuses on everything above the kernel, where applications such as Apache, bash, cp, vim, Emacs, gcc, gdb, glibc, ls, mv, and X exist.
Written primarily for engineers looking to program (better) at the low level, this book is an ideal teaching tool for any programmer. Even with the trend toward high-level development, either through web software (such as PHP) or managed code (C#), someone still has to write the PHP interpreter and the C# virtual machine. Linux System Programming gives you an understanding of core internals that makes for better code, no matter where it appears in the stack. Debugging high-level code often requires you to understand the system calls and kernel behavior of your operating system, too.
Key topics include:
- An overview of Linux, the kernel, the C library, and the C compiler
- Reading from and writing to files, along with other basic file I/O operations, including how the Linux kernel implements and manages file I/O
- Buffer size management, including the Standard I/O library
- Advanced I/O interfaces, memory mappings, and optimization techniques
- The family of system calls for basic process management
- Advanced process management, including real-time processes
- File and directories-creating, moving, copying, deleting, and managing them
- Memory management -- interfaces for allocating memory, managing the memory youhave, and optimizing your memory access
- Signals and their role on a Unix system, plus basic and advanced signal interfaces
- Time, sleeping, and clock management, starting with the basics and continuing through POSIX clocks and high resolution timers
- ISBN-100596009585
- ISBN-13978-0596009588
- Edition1st
- PublisherO'Reilly Media
- Publication dateSeptember 28, 2007
- LanguageEnglish
- Dimensions6.89 x 0.85 x 9.02 inches
- Print length392 pages
Customers who viewed this item also viewed
Editorial Reviews
Book Description
About the Author
Robert Love has been a Linux user and hacker since the early days. Heis active in, and passionate about, both the Linux kernel and GNOMEdesktop communities. His recent contributions to the Linux kernelinclude work on the kernel event layer and inotify. GNOME-relatedcontributions include Beagle, GNOME Volume Manager, NetworkManager,and Project Utopia. Currently Robert works in the Open Source ProgramOffice at Google.
As an author, Robert is responsible for Linux Kernel Development(SAMS), now in its second edition, and Linux System Programming(O'Reilly). He is also a coauthor of the fifth edition of O'Reilly'sLinux in a Nutshell. He's a Contributing Editor for Linux Journal, haswritten numerous articles, and has been invited to speak around theworld on Linux.
Robert graduated from the University of Florida with a B.A. inMathematics and a B.S. in Computer Science. Hailing from SouthFlorida, he currently calls Boston home.
Product details
- Publisher : O'Reilly Media; 1st edition (September 28, 2007)
- Language : English
- Paperback : 392 pages
- ISBN-10 : 0596009585
- ISBN-13 : 978-0596009588
- Item Weight : 1.37 pounds
- Dimensions : 6.89 x 0.85 x 9.02 inches
- Best Sellers Rank: #4,088,186 in Books (See Top 100 in Books)
- #340 in Linux Programming
- #679 in C Programming Language
- #2,485 in Computer Hacking
- Customer Reviews:
About the author

Robert Love is an author, speaker, and engineer. He contributes to open source projects such as the Linux kernel, GNOME desktop, and Android mobile platform. Robert is Senior Director of Engineering at Google Cloud where builds planet-scale networking products. Robert earned a BA in Mathematics and a BS in Computer Science from the University of Florida. He lives in Boston.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
I found this book very easy to read and as other reviews say it mostly just lists the calls and describes them, but it does so very clearly and explains uses for them and the pros and cons of each. For me I got the book so I understood how linux worked under-the-hood and for this, this book does a very good job. It explains how the operating system communicates with the disc, how processes are implemented and how reading and writing onto the disc is optimised for performance and efficiency. I'm only half way though but I'm finding it very insightful and getting more out of it to what I thought I would.
Good to get some tips on how the system works an why, really good explanations for all the points exposed, isn't a "Linux Specific" book, mostly based on POSIX and when not is well distinguished, also include some peculiar calls from other OS.
One of the programs that I've been working on is an I/O intensive conversion from a legacy platform to Linux. The original code took about 8 minutes per gigabyte of data to process. I had worked and squeezed every trick I could think of and got the application down to 10 seconds per gigabyte. From what I learned in just the first few chapters, I was able to knock an additional 3% off the application performance. (It has been mentioned that I should state that I had been unaware of fread_unlocked and fwrite_unlocked before the book ... see comments for more detailed discussion).
When I finish the book, I fully intend on passing it over to one of our junior members so that they can benefit from it.
I strongly recommend this book for anyone who has a somewhat shallow knowledge of Linux and wants to learn more about Linux system calls and its performance tuning. It's very useful for every programmer.
However, it's fairly small and could go into more detail. For example, I would have liked a discussion of edge-triggered vs. level-triggered epoll() usage. The author mentions that edge-triggered needs a different programming style. What is it? Is it better? Regarding signal handling, the author hints at injecting signals into the event loop, but how could one do it concretely? On the subject of I/O buffering, not much is said except that standard I/O exists. But I'm here for the meat, and I want to know how to implement my own I/O buffering! Pretty much every chapter ends when the fun is about to begin.
I'm still hungry. Nevertheless, every system programmer for Linux should read this book. I hope for an expanded second edition.



