{"product_id":"the-linux-programming-interface-isbn-9781593272203","title":"The Linux Programming Interface","description":"\u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e (TLPI) is the definitive guide to the Linux and UNIX programming interface—the interface employed by nearly every application that runs on a Linux or UNIX system.\u003cbr\u003e\u003cbr\u003eIn this authoritative work, Linux programming expert Michael Kerrisk provides detailed descriptions of the system calls and library functions that you need in order to master the craft of system programming, and accompanies his explanations with clear, complete example programs.\u003cbr\u003e\u003cbr\u003eYou'll find descriptions of over 500 system calls and library functions, and more than 200 example programs, 88 tables, and 115 diagrams. You'll learn how to:\u003cbr\u003e–Read and write files efficiently\u003cbr\u003e–Use signals, clocks, and timers\u003cbr\u003e–Create processes and execute programs\u003cbr\u003e–Write secure programs\u003cbr\u003e–Write multithreaded programs using POSIX threads\u003cbr\u003e–Build and use shared libraries\u003cbr\u003e–Perform interprocess communication using pipes, message queues, shared memory, and semaphores\u003cbr\u003e–Write network applications with the sockets API\u003cbr\u003e\u003cbr\u003eWhile \u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e covers a wealth of Linux-specific features, including \u003ci\u003eepoll\u003c\/i\u003e, \u003ci\u003einotify\u003c\/i\u003e, and the \u003ci\u003e\/proc\u003c\/i\u003e file system, its emphasis on UNIX standards (POSIX.1-2001\/SUSv3 and POSIX.1-2008\/SUSv4) makes it equally valuable to programmers working on other UNIX platforms.\u003cbr\u003e\u003cbr\u003e\u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e is the most comprehensive single-volume work on the Linux and UNIX programming interface, and a book that's destined to become a new classic.Preface\u003cbr\u003eChapter 1: History and Standards\u003cbr\u003eChapter 2: Fundamental Concepts\u003cbr\u003eChapter 3: System Programming Concepts\u003cbr\u003eChapter 4: File I\/O: The Universal I\/O Model\u003cbr\u003eChapter 5: File I\/O: Further Details\u003cbr\u003eChapter 6: Processes\u003cbr\u003eChapter 7: Memory Allocation\u003cbr\u003eChapter 8: Users and Groups\u003cbr\u003eChapter 9: Process Credentials\u003cbr\u003eChapter 10: Time\u003cbr\u003eChapter 11: System Limits and Options\u003cbr\u003eChapter 12: System and Process Information\u003cbr\u003eChapter 13: File I\/O Buffering\u003cbr\u003eChapter 14: File Systems\u003cbr\u003eChapter 15: File Attributes\u003cbr\u003eChapter 16: Extended Attributes\u003cbr\u003eChapter 17: Access Control Lists\u003cbr\u003eChapter 18: Directories and Links\u003cbr\u003eChapter 19: Monitoring File Events\u003cbr\u003eChapter 20: Signals: Fundamental Concepts\u003cbr\u003eChapter 21: Signals: Signal Handlers\u003cbr\u003eChapter 22: Signals: Advanced Features\u003cbr\u003eChapter 23: Timers and Sleeping\u003cbr\u003eChapter 24: Process Creation\u003cbr\u003eChapter 25: Process Termination\u003cbr\u003eChapter 26: Monitoring Child Processes\u003cbr\u003eChapter 27: Program Execution\u003cbr\u003eChapter 28: Process Creation and Program Execution in More Detail\u003cbr\u003eChapter 29: Threads: Introduction\u003cbr\u003eChapter 30: Threads: Thread Synchronization\u003cbr\u003eChapter 31: Threads: Thread Safety and Per-Thread Storage\u003cbr\u003eChapter 32: Threads: Thread Cancellation\u003cbr\u003eChapter 33: Threads: Further Details\u003cbr\u003eChapter 34: Process Groups, Sessions, and Job Control\u003cbr\u003eChapter 35: Process Priorities and Scheduling\u003cbr\u003eChapter 36: Process Resources\u003cbr\u003eChapter 37: Daemons\u003cbr\u003eChapter 38: Writing Secure Privileged Programs\u003cbr\u003eChapter 39: Capabilities\u003cbr\u003eChapter 40: Login Accounting\u003cbr\u003eChapter 41: Fundamentals of Shared Libraries\u003cbr\u003eChapter 42: Advanced Features of Shared Libraries\u003cbr\u003eChapter 43: Interprocess Communication Overview\u003cbr\u003eChapter 44: Pipes and FIFOs\u003cbr\u003eChapter 45: Introduction to System V IPC\u003cbr\u003eChapter 46: System V Message Queues\u003cbr\u003eChapter 47: System V Semaphores\u003cbr\u003eChapter 48: System V Shared Memory\u003cbr\u003eChapter 49: Memory Mappings\u003cbr\u003eChapter 50: Virtual Memory Operations\u003cbr\u003eChapter 51: Introduction to POSIX IPC\u003cbr\u003eChapter 52: POSIX Message Queues\u003cbr\u003eChapter 53: POSIX Semaphores\u003cbr\u003eChapter 54: POSIX Shared Memory\u003cbr\u003eChapter 55: File Locking\u003cbr\u003eChapter 56: Sockets: Introduction\u003cbr\u003eChapter 57: Sockets: UNIX Domain\u003cbr\u003eChapter 58: Sockets: Fundamentals of TCP\/IP Networks\u003cbr\u003eChapter 59: Sockets: Internet Domains\u003cbr\u003eChapter 60: Sockets: Server Design\u003cbr\u003eChapter 61: Sockets: Advanced Topics\u003cbr\u003eChapter 62: Terminals\u003cbr\u003eChapter 63: Alternative I\/O Models\u003cbr\u003eChapter 64: Pseudoterminals\u003cbr\u003eAppendix A: Tracing System Calls\u003cbr\u003eAppendix B: Parsing Command-Line Options\u003cbr\u003eAppendix C: Casting the NULL Pointer\u003cbr\u003eAppendix D: Kernel Configuration\u003cbr\u003eAppendix E: Further Sources of Information\u003cbr\u003eAppendix F: Solutions to Selected Exercises\"If I had to choose a single book to sit next to my machine when writing software for Linux, this would be it.\"\u003cbr\u003e\u003cb\u003e—Martin Landers, Software Engineer, Google\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"\u003ci\u003eEverything\u003c\/i\u003e relating to the subject that I could reasonably think of is in the book, in a very thorough and maniacally complete yet enjoyably readable way.\"\u003cbr\u003e\u003cb\u003e—Federico Lucifredi, Slashdot.org\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"This book, with its detailed descriptions and examples, contains everything you need to understand the details and nuances of the low-level programming APIs in Linux . . . no matter what the level of reader, there will be something to be learnt from this book.\"\u003cbr\u003e\u003cb\u003e—Mel Gorman, Author of \u003ci\u003eUnderstanding the Linux Virtual Memory Manager\u003c\/i\u003e\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"Michael Kerrisk has not only written a great book about Linux programming and how it relates to various standards, but has also taken care that bugs he noticed got fixed and the man pages were (greatly) improved. In all three ways, he has made Linux programming easier. The in-depth treatment of topics in \u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e . . . makes it a must-have reference for both new and experienced Linux programmers.\"\u003cbr\u003e\u003cb\u003e—Andreas Jaeger, Program Manager, openSUSE, Novell\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"Michael's inexhaustible determination to get his information right, and to express it clearly and concisely, has resulted in a strong reference source for programmers. While this work is targeted at Linux programmers, it will be of value to any programmer working in the UNIX\/POSIX ecosystem.\"\u003cbr\u003e\u003cb\u003e—David Butenhof, Author of \u003ci\u003eProgramming with POSIX Threads\u003c\/i\u003e and Contributor to the POSIX and UNIX Standards\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\". . . a very thorough—yet easy to read—explanation of UNIX system and network programming, with an emphasis on Linux systems. It's certainly a book I'd recommend to anybody wanting to get into UNIX programming (in general) or to experienced UNIX programmers wanting to know 'what's new' in the popular GNU\/Linux system.\"\u003cbr\u003e\u003cb\u003e—Fernando Gont, Network Security Researcher, IETF Participant, and RFC Author\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\". . . encyclopedic in the breadth and depth of its coverage, and textbook-like in its wealth of worked examples and exercises. Each topic is clearly and comprehensively covered, from theory to hands-on working code. Professionals, students, educators, this is the Linux\/UNIX reference that you have been waiting for.\"\u003cbr\u003e\u003cb\u003e—Anthony Robins, Associate Professor of Computer Science, The University of Otago\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"I've been very impressed by the precision, the quality and the level of detail Michael Kerrisk put in his book. He is a great expert of Linux system calls and lets us share his knowledge and understanding of the Linux APIs.\"\u003cbr\u003e\u003cb\u003e—Christophe Blaess, Author of \u003ci\u003eProgrammation système en C sous Linux\u003c\/i\u003e\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\". . . an essential resource for the serious or professional Linux and UNIX systems programmer. Michael Kerrisk covers the use of all the key APIs across both the Linux and UNIX system interfaces with clear descriptions and tutorial examples and stresses the importance and benefits of following standards such as the Single UNIX Specification and POSIX 1003.1.\"\u003cbr\u003e\u003cb\u003e—Andrew Josey, Director, Standards, The Open Group, and Chair of The POSIX 1003.1 Working Group\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"What could be better than an encyclopedic reference to the Linux system, from the standpoint of the system programmer, written by none other than the maintainer of the man pages himself? \u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e is comprehensive and detailed. I firmly expect it to become an indispensable addition to my programming bookshelf.\"\u003cbr\u003e\u003cb\u003e—Bill Gallmeister, Author of \u003ci\u003ePOSIX.4 Programmer's Guide: Programming for the Real World\u003c\/i\u003e\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\". . . the most complete and up-to-date book about Linux and UNIX system programming. If you're new to Linux system programming, if you're a UNIX veteran focused on portability while interested in learning the Linux way, or if you're simply looking for an excellent reference about the Linux programming interface, then Michael Kerrisk's book is definitely the companion you want on your bookshelf.\"\u003cbr\u003e\u003cb\u003e—Loïc Domaigné, Chief Software Architect (Embedded), Corpuls.com\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"I found \u003ci\u003eThe Linux Programming Interface\u003c\/i\u003e to be extremely useful and expect to return to it frequently. Anyone who has an interest in programming for Linux will likely feel the same way.\"\u003cbr\u003e\u003cb\u003e—Jake Edge, LWN.net\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"Michael Kerrisk's new book [is] a thing of beauty. A book you're proud to just have on the shelf, but too useful to stay there.\"\u003cbr\u003e\u003cb\u003e—Serge Hallyn, Linux Kernel Developer\u003cbr\u003e\u003c\/b\u003e\u003cbr\u003e\"If you think you don't need this book since you know everything already, that's what I thought too, and I was wrong.\"\u003cbr\u003e\u003cb\u003e—Bert Hubert, Netherlabs Computer Consulting\u003cbr\u003e\u003c\/b\u003e\u003cb\u003eMichael Kerrisk\u003c\/b\u003e has been using and programming UNIX systems for more than 20 years, and has taught many week-long courses on UNIX system programming. Since 2004, he has maintained the \u003ci\u003eman-pages project\u003c\/i\u003e (http:\/\/www.kernel.org\/doc\/man-pages\/), which produces the manual pages describing the Linux kernel and glibc programming APIs. He has written or co-written more than 250 of the manual pages and is actively involved in the testing and design review of new Linux kernel-userspace interfaces. Michael lives with his family in Munich, Germany.","brand":"No Starch Press","offers":[{"title":"Default Title","offer_id":44864268632293,"sku":"NP9781593272203","price":99.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781593272203.jpg?v=1767740246","url":"https:\/\/k12savings.com\/products\/the-linux-programming-interface-isbn-9781593272203","provider":"K12savings","version":"1.0","type":"link"}