Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← C++ 编程 / C++ Programming

系统与网络编程 / Systems & Networking

1. 系统与网络编程路线 / Systems and Network Programming Roadmap

2. 进程、fork/exec、wait 与信号 / Processes, fork/exec, wait, and Signals

3. 文件描述符、I/O、mmap 与资源所有权 / File Descriptors, I/O, mmap, and Resource Ownership

4. IPC、调度与虚拟内存边界 / IPC, Scheduling, and Virtual Memory Boundaries

5. Socket API、TCP 与连接模型 / Socket API, TCP, and Connection Model

6. 非阻塞 I/O、epoll 与 Reactor / Nonblocking I/O, epoll, and Reactor

7. 协议分帧、HTTP 基础与服务加固 / Protocol Framing, HTTP Basics, and Service Hardening

8. 系统网络调试与生产检查表 / System and Network Debugging and Production Checklist

本页目录

系统与网络编程路线 / Systems and Network Programming Roadmap ​

1. 这个模块到底学什么 ​

C++ 系统与网络编程不是把 POSIX 函数表背下来。它训练的是一种边界感:你的 C++ 对象什么时候只是普通内存,什么时候代表一个内核资源;你的函数什么时候只是一次库调用,什么时候会进入内核、阻塞线程、改变进程状态或参与网络协议。

text
C++ object model
  -> RAII and ownership
  -> system call boundary
  -> kernel resource
  -> observable state
  -> production diagnosis
1
2
3
4
5
6

2. 两条主线 ​

本模块分成 OS lane 和 network lane。OS lane 先讲进程、fd、文件、mmap、IPC、调度和虚拟内存;network lane 在 fd 模型上继续讲 socket、TCP、epoll、Reactor、协议分帧和 HTTP 服务。

text
OS lane:
  process -> fd -> file/mmap -> IPC/scheduler/VM

Network lane:
  socket/TCP -> nonblocking/epoll/Reactor -> framing/HTTP hardening

Practice lane:
  strace/lsof/ss/tcpdump/gdb/perf -> incident checklist
1
2
3
4
5
6
7
8

3. 阅读顺序 ​

  • 01:进程、fork/exec、wait、exit status、signal 和生命周期。
  • 02:文件描述符、fd 表、open file description、read/write、mmap 和 RAII。
  • 03:IPC、pipe/socketpair/shared memory、调度、虚拟内存和隔离。
  • 04:TCP、socket、地址端口、连接模型、字节流和关闭。
  • 05:非阻塞 I/O、EAGAIN、epoll、Reactor、连接状态机和背压。
  • 06:协议分帧、HTTP 请求响应、parser 状态机、限制、超时和加固。
  • 07:系统网络调试、生产检查表和故障复盘。

4. 核心词先建立 ​

process:操作系统调度和资源归属的基本单位。一个进程有地址空间、fd 表、信号处理方式、环境变量和退出状态。

file descriptor:进程 fd 表里的整数索引,指向内核 open file description、socket、pipe、eventfd 等资源。

system call:用户态请求内核操作资源的边界,例如 read、write、fork、exec、mmap、socket。

blocking:调用条件不满足时让线程等待,例如 accept 等连接、read 等数据、waitpid 等子进程。

socket:网络端点句柄,在 POSIX 下也是 fd。服务端 listening socket 和 connected socket 职责不同。

TCP byte stream:可靠有序字节流,不保留应用层消息边界。协议必须自己分帧。

event loop:集中等待多个事件并分派处理的结构,常用于大量连接。

protocol parser:把字节流转换成请求/响应对象的状态机,必须带大小限制和错误策略。

5. 先修和边界 ​

读本模块前最好已经理解 RAII、移动语义、异常安全、线程基础和基本命令行使用。这里不会重新讲 C++ 语法,也不会深入 Linux 内核源码;重点是用户态 C++ 怎样正确使用系统能力。

6. 学完后应能回答的问题 ​

  • fork 后父子进程共享什么、不共享什么?
  • exec 为什么会替换进程映像,却保留部分 fd?
  • fd、open file description、文件 offset 的关系是什么?
  • mmap 为什么不是普通指针,映射失效会发生什么?
  • pipe、socketpair、shared memory 分别适合什么 IPC?
  • socket 和 TCP 连接是什么关系?
  • 为什么 TCP 没有消息边界?
  • 非阻塞 I/O 为什么必须处理 EAGAIN?
  • epoll 的 LT/ET 语义为什么影响 read/write 循环?
  • HTTP parser 为什么必须有状态和大小限制?

7. 实践路线 ​

建议按小项目推进:先写进程启动器,再写文件复制和 mmap 检查器,再写 pipe 子进程通信,最后写阻塞 echo、epoll echo、长度前缀协议和最小 HTTP parser。

text
week 1: process runner + wait status
week 2: fd copier + mmap viewer
week 3: pipe child process protocol
week 4: blocking TCP echo
week 5: epoll echo with timeout
week 6: framed protocol + HTTP parser
1
2
3
4
5
6

8. 总结 ​

本模块的主线是:用 C++ 类型管理内核资源,用系统工具观察真实状态,用协议和状态机处理网络输入。只要这条线清楚,API 名字会自然归位。

深化切片 1:最小实验 ​

围绕 process 和 fd 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 2:错误注入 ​

围绕 fd 和 system call 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 3:外部观察 ​

围绕 system call 和 socket 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 4:RAII 封装 ​

围绕 socket 和 TCP 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 5:并发边界 ​

围绕 TCP 和 epoll 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 6:生产复盘 ​

围绕 epoll 和 protocol 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 7:最小实验 ​

围绕 protocol 和 diagnosis 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 8:错误注入 ​

围绕 diagnosis 和 process 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 9:外部观察 ​

围绕 process 和 fd 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 10:RAII 封装 ​

围绕 fd 和 system call 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 11:并发边界 ​

围绕 system call 和 socket 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 12:生产复盘 ​

围绕 socket 和 TCP 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 13:最小实验 ​

围绕 TCP 和 epoll 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 14:错误注入 ​

围绕 epoll 和 protocol 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 15:外部观察 ​

围绕 protocol 和 diagnosis 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 16:RAII 封装 ​

围绕 diagnosis 和 process 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 17:并发边界 ​

围绕 process 和 fd 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 18:生产复盘 ​

围绕 fd 和 system call 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 19:最小实验 ​

围绕 system call 和 socket 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 20:错误注入 ​

围绕 socket 和 TCP 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 21:外部观察 ​

围绕 TCP 和 epoll 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 22:RAII 封装 ​

围绕 epoll 和 protocol 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 23:并发边界 ​

围绕 protocol 和 diagnosis 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 24:生产复盘 ​

围绕 diagnosis 和 process 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 25:最小实验 ​

围绕 process 和 fd 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 26:错误注入 ​

围绕 fd 和 system call 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 27:外部观察 ​

围绕 system call 和 socket 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 28:RAII 封装 ​

围绕 socket 和 TCP 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 29:并发边界 ​

围绕 TCP 和 epoll 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 30:生产复盘 ​

围绕 epoll 和 protocol 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 31:最小实验 ​

围绕 protocol 和 diagnosis 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 32:错误注入 ​

围绕 diagnosis 和 process 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 33:外部观察 ​

围绕 process 和 fd 做一次工程练习。用 ps、strace、lsof、pmap、ss、tcpdump 或调试器观察内核状态,而不是只看 C++ 变量。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 34:RAII 封装 ​

围绕 fd 和 system call 做一次工程练习。把资源获取、移动、释放和失效状态写进类型,避免正常路径能释放、异常路径泄漏。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 35:并发边界 ​

围绕 system call 和 socket 做一次工程练习。系统调用可能阻塞,信号可能打断等待,多个线程可能同时操作同一个资源。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 36:生产复盘 ​

围绕 socket 和 TCP 做一次工程练习。记录命令、errno、pid、fd、路径、peer、字节数和状态,保证另一个人能复现。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 37:最小实验 ​

围绕 TCP 和 epoll 做一次工程练习。用一个最小程序观察一个系统行为,不要把 shell、库封装和业务代码混在一起。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

深化切片 38:错误注入 ​

围绕 epoll 和 protocol 做一次工程练习。故意制造一个失败条件,例如文件不存在、权限不足、子进程退出码非零、管道对端关闭或映射越界。

text
hypothesis
  -> minimal program
  -> external observation
  -> failure injection
  -> engineering rule
1
2
3
4
5

复盘时要说明:这个现象属于 C++ 对象生命周期、POSIX/系统调用语义、内核调度、文件系统、虚拟内存,还是网络协议。分层越清楚,系统与网络编程路线 就越不容易学成 API 背诵。

最后更新于:

Pager
上一篇← C++ 编程 / C++ Programming
下一篇2. 进程、fork/exec、wait 与信号 / Processes, fork/exec, wait, and Signals

持续记录,持续成长

Copyright © Tidenflow