How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
W. Richard Stevens, Stephen A. Rago
"Stephen Rago's update is a long overdue benefit to the community of professionals using the versatile family of UNIX and UNIX-like operating environments. It removes obsolescence and includes newer developments. It also thoroughly updates the context of all topics, examples, and applications to recent releases of popular implementations of UNIX and UNIX-like environments. And yet, it does all this while retaining the style and taste of the original classic." --Mukesh Kacker, cofounder and former CTO of Pronto Networks, Inc. "One of the essential classics of UNIX programming." --Eric S. Raymond, author of The Art of UNIX Programming "This is the definitive reference book for any serious or professional UNIX systems programmer. Rago has updated and extended the classic Stevens text while keeping true to the original. The APIs are illuminated by clear examples of their use. He also mentions many of the pitfalls to look out for when programming across different UNIX system implementations and points out how to avoid these pitfalls using relevant standards such as POSIX 1003.1, 2004 edition and the Single UNIX Specification, Version 3." --Andrew Josey, Director, Certification, The Open Group, and Chair of the POSIX 1003.1 Working Group "Advanced Programming in the UNIX® Environment, Second Edition, is an essential reference for anyone writing programs for a UNIX system. It's the first book I turn to when I want to understand or re-learn any of the various system interfaces. Stephen Rago has successfully revised this book to incorporate newer operating systems such as GNU/Linux and Apple's OS X while keeping true to the first edition in terms of both readability and usefulness. It will always have a place right next to my computer." --Dr. Benjamin Kuperman, Swarthmore College Praise for the First Edition "Advanced Programming in the UNIX® Environment is a must-have for any serious C programmer who works under UNIX. Its depth, thoroughness, and clarity of explana-tion are unmatched." --UniForum Monthly "Numerous readers recommended Advanced Programming in the UNIX® Environment by W. Richard Stevens (Addison-Wesley), and I'm glad they did; I hadn't even heard of this book, and it's been out since 1992. I just got my hands on a copy, and the first few chapters have been fascinating." --Open Systems Today "A much more readable and detailed treatment of UNIX internals can be found in Advanced Programming in the UNIX® Environment by W. Richard Stevens (Addison-Wesley). This book includes lots of realistic examples, and I find it quite helpful when I have systems programming tasks to do." --RS/Magazine "This is the definitive reference book for any serious or professional UNIX systems programmer. Rago has updated and extended the original Stevens classic while keeping true to the original." --Andrew Josey, Director, Certification, The Open Group, and Chair of the POSIX 1003.1 Working Group For over a decade, serious C programmers have relied on one book for practical, in-depth knowledge of the programming interfaces that drive the UNIX and Linux kernels: W. Richard Stevens' Advanced Programming in the UNIX® Environment . Now, Stevens' colleague Stephen Rago has thoroughly updated this classic to reflect the latest technical advances and add support for today's leading UNIX and Linux platforms. Rago carefully retains the spirit and approach that made this book a classic. Building on Stevens' work, he begins with basic topics such as files, directories, and processes, carefully laying the groundwork for understanding more advanced techniques, such as signal handling and terminal I/O. Substantial new material includes chapters on threads and multithreaded programming, using the socket interface to drive interprocess communication (IPC), and extensive coverage of the interfaces added to the latest version of the POSIX.1 standard. Nearly all examples have been tested on four of today's most widely used UNIX/Linux platforms: FreeBSD 5.2.1; the Linux 2.4.22 kernel; Solaris 9; and Darwin 7.4.0, the FreeBSD/Mach hybrid underlying Apple's Mac OS X 10.3. As in the first edition, you'll learn through example, including more than 10,000 lines of downloadable, ANSI C source code. More than 400 system calls and functions are demonstrated with concise, complete programs that clearly illustrate their usage, arguments, and return values. To tie together what you've learned, the book presents several chapter-length case studies, each fully updated for contemporary environments. Advanced Programming in the UNIX® Environment has helped a generation of programmers write code with exceptional power, performance, and reliability. Now updated for today's UNIX/Linux systems, this second edition will be even more indispensable.
Brian Wilson Kernighan, Rob. Pike
Designed for first-time and experienced users, this book describes the UNIX® programming environment and philosophy in detail. Readers will gain an understanding not only of how to use the system, its components, and the programs, but also how these fit into the total environment.
David R. Butenhof
Threads are the key to faster, more efficient, and easier-to-maintain operating systems. Butenhof, a recognized authority on POSIX threads, tells how to use Pthreads in the real world, making efficient and portable applications. A unique feature of the book is the many examples which consist of simple instructive programs. The code is expansive and well-annotated. Key chapters are devoted to advanced threaded programming, real code (including read-write locks), and hints to avoid bad code and performance problems. Programming in POSIX Threads provides a solid general understanding of threaded programming models, concurrency, synchronization, and scheduling--need to know information for learning to think in terms of threaded concepts.
Counsels programmers and administrators for big and small organizations on how to work with large-scale application datasets using Apache Hadoop, discussing its capacity for storing and processing large amounts of data while demonstrating best practices for building reliable and scalable distributed systems.
Kay A. Robbins, Steven Robbins
• •Learn UNIX essentials with a concentration on communication, concurrency, and multithreading techniques •Full of ideas on how to design and implement good software along with unique projects throughout •Excellent companion to Stevens' Advanced UNIX System Programming
W. Richard Stevens
Well-implemented interprocess communications (IPC) are key to the performance of virtually every non-trivial UNIX program. This book provides coverage of various forms of IPC, including message passing, synchronization, shared memory, and Remote Procedure Calls (RPC). It offers a basic introduction to IPC and the problems it is intended to solve.
This book is about writing software that makes the most effective use of the system you're running on -- code that interfaces directly with the kernel and core system libraries, including the shell, text editor, compiler, debugger, core utilities, and system daemons. The majority of both Unix and Linux code is still written at the system level, and Linux System Programming focuses on everything above the kernel, where applications such as Apache, bash, cp, vim, Emacs, gcc, gdb, glibc, ls, mv, and X exist. Written primarily for engineers looking to program (better) at the low level, this book is an ideal teaching tool for any programmer. Even with the trend toward high-level development, either through web software (such as PHP) or managed code (C#), someone still has to write the PHP interpreter and the C# virtual machine. Linux System Programming gives you an understanding of core internals that makes for better code, no matter where it appears in the stack. Debugging high-level code often requires you to understand the system calls and kernel behavior of your operating system, too. Key topics include: An overview of Linux, the kernel, the C library, and the C compiler Reading from and writing to files, along with other basic file I/O operations, including how the Linux kernel implements and manages file I/O Buffer size management, including the Standard I/O library Advanced I/O interfaces, memory mappings, and optimization techniques The family of system calls for basic process management Advanced process management, including real-time processes File and directories-creating, moving, copying, deleting, and managing them Memory management -- interfaces for allocating memory, managing the memory you have, and optimizing your memory access Signals and their role on a Unix system, plus basic and advanced signal interfaces Time, sleeping, and clock management, starting with the basics and continuing through POSIX clocks and high resolution timers With Linux System Programming, you will be able to take an in-depth look at Linux from both a theoretical and an applied perspective as you cover a wide range of programming topics.
Ole Henry Halvorsen, Douglas Clarke
OS X and iOS Kernel Programming combines essential operating system and kernel architecture knowledge with a highly practical approach that will help you write effective kernel-level code. You’ll learn fundamental concepts such as memory management and thread synchronization, as well as the I/O Kit framework. You’ll also learn how to write your own kernel-level extensions, such as device drivers for USB and Thunderbolt devices, including networking, storage and audio drivers. OS X and iOS Kernel Programming provides an incisive and complete introduction to the XNU kernel, which runs iPhones, iPads, iPods, and Mac OS X servers and clients. Then, you’ll expand your horizons to examine Mac OS X and iOS system architecture. Understanding Apple’s operating systems will allow you to write efficient device drivers, such as those covered in the book, using I/O Kit. With OS X and iOS Kernel Programming, you’ll: Discover classical kernel architecture topics such as memory management and thread synchronization Become well-versed in the intricacies of the kernel development process by applying kernel debugging and profiling tools Learn how to deploy your kernel-level projects and how to successfully package them Write code that interacts with hardware devices Examine easy to understand example code that can also be used in your own projects Create network filters Whether you’re a hobbyist, student, or professional engineer, turn to OS X andiOS Kernel Programming and find the knowledge you need to start developing What you’ll learn OS X and iOS common core architecture How to write extremely efficient code by exploiting kernel details Coding kernel-level extensions How to write device drivers How to program the I/O Kit framework Key mobile device topics like power management drivers and video capture modules To understand OS X memory management and threads To parse kernel debug messages and package projects ready for deployment Who this book is for This book is suited for: Intermediate and advanced iPhone and OS X programmers ready for the next step Kernel-level programmers interested in how OS X and iOS function Open source programmers with a background in Linux or BSD, OS X and iOS Programmers interested in application performance System administrators running OS X clusters Table of Contents Operating System Fundamentals Mac OS X and iOS Xcode and the Kernel Development Environment The I/O Kit Framework Interacting with Drivers from Applications Memory Management Synchronisation and Threading USB Drivers PCI and Thunderbolt Power Management Serial Port Drivers Core Audio Network Drivers Storage Drivers and Filesystems User-Space Drivers Debugging and Profiling Advanced Kernel Programming Deployment
Charlie Miller, Dion Blazakis, Dino Dai Zovi, Stefan Esser, Vincenzo Iozzo, Ralf-Philip Weinmann
Describes the security architecture of iOS and offers information on such topics as encryption, jailbreaks, code signing, sandboxing, iPhone fuzzing, and ROP payloads, along with ways to defend iOS devices.
Paul J. Deitel, Harvey M. Deitel
C How to Program, 6e,is ideal for introductory courses in C Programming. Also for courses in Programming for Engineers, Programming for Business, and Programming for Technology. This text provides a valuable reference for programmers and anyone interested in learning the C programming language. The Deitels' groundbreakingHow to Programseries offers unparalleled breadth and depth of object-oriented programming concepts and intermediate-level topics for further study. Using the Deitels’ signature “Live-Code™ Approach,” this complete, authoritative introduction to C programming offers strong treatment of structured algorithm and program development in ANSI/ISO C with 150 working C programs. Includes rich, 300-page treatment of object-oriented programming in C++ that helps readers interpret the code more effectively.
This guide, intended as an explanation of the POSIX standard and as a reference for the POSIX.1 programming library, helps you write more portable programs. Most UNIX systems today are POSIX compliant because the federal government requires it for its purchases. Even OSF and UI agree on support for POSIX. Unfortunately, given the manufacturer's documentation, it can be difficult to distinguish system-specific features from those features defined by POSIX. The POSIX Programmer's Guide is especially helpful if you are writing programs that must run on multiple UNIX platforms. This guide also helps you convert existing UNIX programs for POSIX compliance. Contents include: Introduction to POSIX. Basics of writing a POSIX-compliant program. Input/output facilities of the Standard C library. The file system as defined by POSIX. Operations of POSIX Input/Output system, pipes, and FIFOs. Creating and terminating processes and signals. Obtaining information about the environment. Communication line settings and a cu-like utility. POSIX and Standard C, including features and portability pitfalls. Internationalization. Complete list of library functions in alphabetic order. Complete list of data structures and their members. All error codes. Standard headers and the information that they define. Related publications.
John Shapley Gray
Interprocess Communications in Linux explains exactly how to use Linux processes and interprocess communications to build robust, high-performance systems. Coverage includes: named/unnamed pipes, message queues, semaphores, shared memory, RPC and the rpcgen compiler, sockets-based communication, the /proc file system, LinuxThreads POSIX support, multithreading, and much more. Includes detailed exercises, plus dozens of downloadable program examples compiled with GNU C/C++ 2.96 & 3.2 and tested with Red Hat Linux 7.3 & 8.0.
Michael Kosta Loukides, Andrew Oram
Here is a complete package for programmers who are new to UNIX or who would like to make better use of the system. The book provides an introduction to all the tools needed for a C programmer. The CD contains sources and binaries for the most popular GNU tools, including their C/C++ compiler.