Chapter 28.2.1 — TLPI

Chapter 28.2 — TLPI

Chapter 28.1 — TLPI

Chapter 28: Process Creation & Program Execution

Chapter 27.7–27.9 — Implementing system() + Exercises

Chapter 27.6 — Executing a Shell Command: system()

Chapter 27.5 — Signals and exec()

Chapter 27.4 — File Descriptors and exec()

Chapter 27.3 — Interpreter Scripts

Chapter 27.2.2–27.2.4 — Args, Environment & fexecve()

Chapter 27.2 — exec() Library Functions & PATH

Chapter 27.1 — Executing a New Program: execve()

Chapter 26 — Part 6: The SIGCHLD Signal

Chapter 26 — Part 5: Orphans and Zombies

Chapter 26 — Part 4: waitid(), wait3() and wait4()

Chapter 26 — Part 3: Wait Status Macros

Chapter 26 — Part 2: The waitpid() System Call

Chapter 26 — Part 1: The wait() System Call

Chapter 26: Monitoring Child Processes

Chapter 25 — Process Termination

Chapter 25 — Process Termination

Chapter 25 — Process Termination

Chapter 25 — Process Termination

Chapter 25 — Process Termination

Signal Sync: Full Implementation

Synchronizing with Signals After fork()

Scheduling Order After fork()

Race Conditions After fork()

vfork() Dangers & Obsolescence

vfork() vs fork() — Side by Side

Introduction to vfork()

Memory Footprint: CoW in Practice

Text Segment Sharing After fork()

Copy-on-Write (CoW)

Closing Unused File Descriptors After fork()

Shared File Offset & Status Flags

File Descriptors After fork()

Controlling Memory Footprint with fork()

Memory Segments After fork()

fork() Return Values & the Switch Idiom