
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.
[1] http://www.amazon.com/Computer-Systems-Programmers-Randal-Br...
[2] http://www.amazon.com/Design-Operating-System-Prentice-Softw...
Any feedback is welcome.
1. Linux System Programming: Mastering File I/O 2. Linux System Programming: Mastering the Filesystem 3. Linux System Programming: Mastering the Linux Runtime Environment 4. Linux System Programming: Mastering Memory 5. Linux System Programming: Mastering Processes and Threads 6. Linux System Programming: Mastering IPC and Terminals
The Linux Programming Interface: http://www.amazon.com/Linux-Programming-Interface-System-Han...
Advanced Programming in the UNIX Environment: http://www.amazon.com/Advanced-Programming-UNIX-Environment-...
A not-too-distant third choice, Linux System Programming: http://www.amazon.com/Linux-System-Programming-Talking-Direc...
Here's some Linux kernel specific stuff:
http://tldp.org/LDP/tlk/tlk.html
http://www.amazon.com/Linux-System-Programming-Talking-Direc...
The first two have some age on them, but are still relatively reflective of the overall architecture of Linux, even if a lot of detail has changed. Anyway, these three are of reasonable quality. Some of the other stuff out there is pretty rough.
But there's one exception: I've read both books by Robert Love (Linux Kernel Development and Linux System Programming) from cover to cover.