System V IPC – Introduction & API Overview

Pipe Capacity & Atomicity PIPE_BUF, Buffer Limits, Blocking, /proc Tuning

FIFO Client-Server Request-Response Pattern with Named Pipes

FIFO Open Semantics Blocking/Nonblocking open(), O_RDWR, Edge Cases

FIFOs — Named Pipes mkfifo(), Filesystem Entry, Unrelated Process IPC

Shell Pipelines & popen() dup2(), Connecting Filters, popen/pclose

pipe2() — Linux Extension O_CLOEXEC, O_NONBLOCK, and Nonblocking Pipes

Closing Unused Pipe FDs SIGPIPE, EPIPE, and Why Closing Matters

pipe2() — Linux Extension

Closing Unused Pipe FDs

Why Combine pipe() and fork()?

What Are Pipes?

Pipes and FIFOs

Creating and Using Pipes pipe() syscall, fork(), parent-child IPC

Pipes and FIFOs What is a Pipe? How does IPC work?

Pipes and FIFOs

Synchronization Facilities Semaphores · File Locks · Race Conditions · Critical Sections

Communication Facilities Shared Memory · Pipes · POSIX MQ

IPC Overview & Taxonomy

LD_DEBUG — Monitoring the Dynamic Linker

LD_PRELOAD — Preloading Shared Libraries

Library Init & Finalization Functions The Linux Programming Interface

Symbol Versioning in Shared Libraries The Linux Programming Interface

Linker Version Scripts & Symbol Versioning Controlling Visibility and Versioning with .map Files

Controlling Symbol Visibility Why and How to Hide Internal Library Symbols

Accessing Symbols in the Main Program Advanced Shared Library Features

dlsym(), dlclose() & dladdr() Advanced dlopen API

Monitoring the Dynamic Linker LD_DEBUG_OUTPUT · Process ID Tracing

Preloading Shared Libraries LD_PRELOAD · Function Interposition · /etc/ld.so.preload

Initialization and Finalization Functions constructor & destructor Attributes

symbol Versioning Multiple Versions of the Same Function

Linker Version Scripts Controlling Symbol Visibility with .map Files

Controlling Symbol Visibility ABI Design · static keyword · GCC visibility attribute

dlclose(), dladdr() Closing Libraries · Inspecting Symbol Addresses

dlerror() and dlsym() Symbol Lookup & Function Pointer Casting

dlopen() in Depth Reference Counting & Dependency Trees

Dynamically Loaded Libraries

Advanced Features of Shared Libraries

Summary & Review Fundamentals of Shared Libraries

Static vs Shared Libraries