Linux/Unix Resources
Books
Programming Interface:
- TLPI: The Linux Programming Interface: A Linux and UNIX System Programming Handbook, by Michael Kerrisk, Oct. 2010, 1552 pg. wiki, official.
- Advanced Programming in the UNIX Environment (3e), May 2013, p1024, by W. Richard Stevens, Stephen A. Rago, ver3-pdf 631aupe_github
- Advanced UNIX Programming (2nd Edition) May 2004, p736, by Marc J. Rochkind
- The Art of UNIX Programming (The Addison-Wesley Professional Computng Series)
- The Unix Programming Environment (Prentice-Hall Software Series)
Kernel:
- Linux Kernel Development (3e), 2010, 440 pages, by Robert Love
- Understanding the Linux Kernel, 3e, 2005, p944, by Daniel P. Bovet, Marco Cesati
- The best book for beginners with background in operating systems' design and concept. It is accepted as up-to-date, covers version 2.6 of the kernel.
- The Design and Implementation of the FreeBSD Operating System (2e), Sep. 2014, 928 pg.
- Operating Systems Design and Implementation (3e), Jan 14, 2006, 1080 pg.
- Lion's Commentary on UNIX Kernel (115 pg), and source (118 pg), 1977
- The Linux Kernel: This book is published online as a part of TLDP (The Linux Documentation Project). It is not up-to-date and not an internal manual, but provides useful information and introductory materials about principles and mechanisms of the kernel.
- .
- The Design of the Unix Operating System, 1986, p440.
- Action Needed: To acquire and go through the code, run the code in simulator.
- Amazon comment also recommends:
- UNIX Internals: The New Frontiers, Solaris Internals:
- Solaris 10 and OpenSolaris Kernel Architecture (2nd Edition),
- Solaris' Internals (Vol 1) (the older edition covering Solaris 7, 8 & 9 has a little more depth than the newer version in some areas, though Solaris 10 has changed the game again in a big way) and
- The Magic Garden Explained Solutions Manual: The Internals of Unix System V Release 4 : An Open Systems Design, a trip through SVr4, though not quite as friendly as Bach manages to make the process of learning SVr3).Mauro, McDougal, Goodheart and Cox list Bach at the top of their bibliographies. Vahalia references Bach in his preface.Which is why you should read this book first, and have it on hand as your studies progress
- .
- Computer Systems: A Programmer's Perspective (2e), 2010, p1080, by Randal E. Bryant and David R. O'Hallaron. Official site, Blog
- Intel 64 and IA-32 Architectures Software Developer's Manuals: Up-to-date, detailed information, Intel 80386 Programmer's Reference Manual.
Links
- What Every Computer Science Major Should Know. Recommended:
- The Unix Programming Environment by Kernighan and Pike,
- Linux Server Hacks
- UNIX and Linux System Administration Handbook
- Linux Kernel Development by Love, and
- Unix Network Programming by Stevens, Fenner and Rudoff
- Comparison of operating systems.
- Comparison of operating system kernels
Colors:
[Done Reading] [Progressing] [Action needed]
Digest
The Linux Programming Interface: A Linux and Unix System Programming Handbook
Sample Code:
- How to learn:
- Useful: reading and experiment with the example program
- Most effective way is to write code, 1) modifying the example to try out my own ideas 2) writing new programs
- Take the time to read the documentation(if it exists) and write small (but increasingly large) test programs until you become confident of your understanding of the software. I have found that, in the long run, this kind of self-training more than pays for itself in terms of saved time.
Linux / Unix System Developer Required Knowledge
Core Knowledge
- Hardware / Assembly Language
- Operating System
Languages
- C / C++ / Java
- Perl / Python
- Lisp: Common Lisp / Emacs Lisp
- Command Line: Bash Scripting
Tool Chain:
- Emacs
- GNU Global
- Graphical
-----C++-----
find the include path: gcc -xc++ -E -v ------GDB-----
GDB DocumentationCommands of GUD/GDB
- @ = C-x C-a / C-c
- @C-b: (gud-break)
- @C-d: (gud-remove)
- @C-t: (gud-tbreak)
- .
- @C-l: (gud-refresh) last line
- .
- @C-s: (gud-step)
- @C-n: (gud-next)
- @C-i: (gud-stepi)
- @C-p: (gud-print)
- @C-r: (gud-cont)
- @ <: frame (gud-down)
- @ >: frame (gud-down)
- @C-u: Continue execution to the current line (gud-until)
- @C-t: Run the program until the selected stack frame returns or stops for some other reason (gud-finish)
- @C-j: (gud-jump)
- C-c C-c: send SIGINT to gdb
Jump in C:
- C-c , j: goto variable
- C-u, C-Space: Goback
- C-c, g: display reference
GDB User Interface:
- gdb-many-windows
- gdb-restore-windows
Links
- GDB Cheatsheet
- Running Debuggers Under Emacs
- GDB Cheatsheet in PDF format
- GDB Summary by Function
- Emacs Manual
- Comparison of Debuggers
- GNU Debugger
- 13 Linux Debuggers for C++ Reviewed