Concentrates on C programming, looking at the GNU tools, and the UNIX C libraries, to teach you step-by-step how to write, build and debug serious application code. Softcover.
The standout feature of Beginning Linux Programming is its wide-ranging coverage of important topics in basic Unix programming. In a series of short chapters, the authors discuss the basics of writing Unix programs in C, with material on basic system calls, file I/O, interprocess communication (for getting programs to work together), and advanced topics such as socket programming and how to create Unix device drivers.
Parallel to this, the book introduces the toolkits and libraries for working with user interfaces, from simpler terminal mode applications to X and GTK+ for graphical user interfaces. While you won't be an authority on X or GTK+ after reading this book, you will certainly be able to explore real Linux development on your own after the capable introductory guide provided here. (The book's main example, a CD-ROM database, gets enhanced in subsequent chapters using new APIs and features as the book moves forward.) This text also serves as a valuable primer on languages and tools such as Tcl, Perl, and CGI. (There's even a section that explains the basics of the Internet and HTML.)
More than ever, there is no shortage of specific information on Linux programming, but few titles provide such a wide-ranging tour of what you need to know to get serious with Linux development. In all, Beginning Linux Programming gives the reader an intelligent sampling of essential topics in today's Linux. It's a wise choice for aspiring Unix C developers or folks seeking to extend the range of their Linux knowledge. --Richard Dragan
Topics covered: Linux overview, compiling C programs, shell programming, pipes, script keywords and functions, Unix file I/O in C, Unix system functions, terminal interfaces (termios, keyboard input, the curses library), memory management, file locking, dbm databases, make and source control basics, man pages, debugging with gdb, processes and signals, POSIX threads and synchronization, IPC and pipes, semaphores, queues and shared memory, sockets, Tcl basics, X Windows and GTK+ for GNOME, Perl basics, HTML and CGI, writing Unix device drivers.