🐧 Linux Systems Programming
Tutorial Prerequisites GitHub ↗
Home / Foundations
Part 1 3 chapters

Foundations

What a system call really is, and the two disciplines this book never stops practicing — how each language reports failure, and how each language shares work.

Chapter 4

Syscalls and the ABI

What a system call really is — the syscall instruction, the register-level kernel ABI, and the vDSO fast path — traced through sysprobe, one specimen program that shows how glibc, the Go runtime, and rustix each reach the same kernel.

40 minutesRead →
Chapter 5

Errors, three ways

One error's journey from a failing write(2) into std::expected, a wrapped Go error, and a Rust Result — copyx establishes the book's error taxonomy, the strerror(3) message contract, and the EINTR retry policy every later chapter reuses.

45 minutesRead →
Chapter 6

Concurrency, three ways

The second thread that runs the whole book — how each language shares work over the same kernel threads. C++23 jthreads and stop tokens, Go's runtime and channels, Rust's compiler-refereed sharing — one parallel checksummer, byte-identical output, and a SIGINT drain you can watch happen.

50 minutesRead →
← Previous part Setting Up Next part → Files and I/O

Linux Systems Programming

A chaptered guide to Linux systems programming in modern C++, Go, and Rust — processes, I/O, memory, IPC, networking, concurrency, debugging, containers, and observability, with runnable examples in all three languages.

Tutorial

  • Outline
  • Prerequisites
  • Lab setup
  • Roadmap

Reference

  • Linux man pages ↗
  • Linux performance (Gregg) ↗
  • View on GitHub ↗
  • Issues ↗
Open source · Apache 2.0 Last built 2026-10-11