The Linux programming interface a Linux and UNIX system programming handbook - Kerrisk, Michael (No Starch Press, 2010)
Includes bibliographical references (p. [1437]-1445) and index
History and standards -- Fundamental concepts -- System programming concepts -- File I/O : the universal I/O model -- File I/O : further details -- Processes -- Memory allocation -- Users and groups -- Process credentials -- Time -- System limits and options -- System and process information -- File I/O buffering -- File systems -- File attributes -- Extended attributes -- Access control lists -- Directories and links -- Monitoring file events -- Signals : fundamental concepts -- Signals : signal handlers -- Signals : advanced features -- Timers and sleeping -- Process creation -- Process termination -- Monitoring child processes -- Program execution -- Process creation and program execution in more detail -- Threads : introduction -- Threads : thread synchronization -- Threads : thread safety and per-thread storage -- Threads : thread cancellation -- Threads : further details -- Process groups, sessions, and job control -- Process priorities and scheduling -- Process resources -- Daemons -- Writing secure privileged programs -- Capabilities -- Login accounting -- Fundamentals of shared libraries -- Advanced features of shared libraries -- Interprocess communication overview -- Pipes and FIFOs -- Introduction to System V IPC -- System V message queues -- System V semaphores -- System V shared memory -- Memory mappings -- Virtual memory operations -- Introduction to POSIX IPC -- POSIX message queues -- POSIX semaphores -- POSIX shared memory -- File locking -- Sockets : introduction -- Sockets : UNIX domain -- Sockets : fundamentals of TCP/IP networks -- Sockets : Internet domains -- Sockets : server design -- Sockets : advanced topics -- Terminals -- Alternative I/O models -- Pseudoterminals -- Appendixes. Tracing system calls -- Parsing command-line options -- Casting the NULL pointer -- Kernel configuration -- Further sources of information -- Solutions to selected exercises
The Linux Programming Interface describes the Linux API (application programming interface)the system calls, library functions, and other low-level interfaces that are used, directly or indirectly, by every program that runs on Linux. Programs that explicitly use these interfaces are commonly called system programs, and include applications such as shells, editors, windowing systems, terminal emulators, file managers, compilers, database management systems, virtual machines, network servers, and much of the other software that is employed on a daily basis on Linux systems. Extensively indexed and heavily cross-referenced, The Linux Programming Interface is both an introductory guide for readers new to the topic of system programming, and a comprehensive reference for experienced system programmers. Although this book goes into detail on a wealth of Linux-specific features, it gives careful attention to contemporary Unix programming standards and to portability issues. - Publisher