With its decidedly user-unfriendly command line interface, Linux can be a foreboding operating system for the beginner. Far from the simple point-and- click style of Windows this UNIX derivative can be confusing to the point of raw frustration for all but the most patient of new users. Good job those nice people at Wrox Press have taken the subject in hand then! In spite of the age of this volume (it was published back in 1996) Beginning Linux Programming has aged very well and if you forgive the mentions of beta versions of some old versions of software there's plenty in here to keep the average Linux newbie happy.
Over 700 pages authors Neil Matthew and Richard Stones broach a huge number of topics ranging from shell programming to the use of curses, communication using sockets and an introduction to the Tcl language in an informative and easy to digest fashion. The one thing this book doesn't do is teach the newbie how to install Linux--that task is left in the hands of sister volume Instant Unix, but if you've already got that far and are looking for pointers on where to go next, Beginning Linux Programming could be the answer to the lion's share of your problems.
Beginning Linux Programming, Fourth Edition continues its unique approach to teaching UNIX programming in a simple and structured way on the Linux platform. Through the use of detailed and realistic examples, students learn by doing, and are able to move from being a Linux beginner to creating custom applications in Linux. The book introduces fundamental concepts beginning with the basics of writing Unix programs in C, and including material on basic system calls, file I/O, interprocess communication (for getting programs to work together), and shell programming. 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. Advanced topics are covered in detail such as processes, pipes, semaphores, socket programming, using MySQL, writing applications for the GNOME or the KDE desktop, writing device drivers, POSIX Threads, and kernel programming for the latest Linux Kernel.