chore: 将所有外部图片本地化到仓库

- 下载 110 张外部图片到根目录 images/ 文件夹
- 更新所有 README.md 中的图片引用为统一路径 images/xxx.png
- 55 张图片成功下载(PNG 格式)
- 55 张失效图片创建占位文件(SVG/PNG)
- 移除所有外部图片链接依赖

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
riba2534
2026-01-05 16:34:13 +08:00
parent d44ecdf807
commit 0d17c981ee
128 changed files with 691 additions and 232 deletions

View File

@@ -10,7 +10,7 @@
下图是基于管道PIPE的进程间通信的模型
![](https://s2.ax1x.com/2019/01/22/kFlk0s.png)
![](images/kFlk0s.png)
可以看出,为了完成进程间通信,需要创建进程。管道并非属于进程的资源,而是和套接字一样,属于操作系统(也就不是 fork 函数的复制对象)。所以,两个进程通过操作系统提供的内存空间进行通信。下面是创建管道的函数。
@@ -70,13 +70,13 @@ Who are you?
可以从程序中看出,首先创建了一个管道,子进程通过 fds[1] 把数据写入管道,父进程从 fds[0] 再把数据读出来。可以从下图看出:
![](https://s2.ax1x.com/2019/01/22/kF8A7d.png)
![](images/kF8A7d.png)
#### 11.1.2 通过管道进行进程间双向通信
下图可以看出双向通信模型:
![](https://s2.ax1x.com/2019/01/22/kF84De.png)
![](images/kF84De.png)
下面是双向通信的示例:
@@ -133,7 +133,7 @@ Child proc output: Thank you for your message
当一个管道不满足需求时,就需要创建两个管道,各自负责不同的数据流动,过程如下图所示:
![](https://s2.ax1x.com/2019/01/22/kFJW0e.png)
![](images/kFJW0e.png)
下面采用上述模型改进 `pipe2.c`
@@ -193,9 +193,9 @@ gcc echo_storeserv.c -o serv
此服务端配合第 10 章的客户端 [echo_mpclient.c](https://github.com/riba2534/TCP-IP-NetworkNote/blob/master/ch10/echo_mpclient.c) 使用,运行结果如下图:
![](https://s2.ax1x.com/2019/01/22/kFUCct.png)
![](images/kFUCct.png)
![](https://s2.ax1x.com/2019/01/22/kFUAHS.png)
![](images/kFUAHS.png)
从图上可以看出服务端已经生成了文件把客户端的消息保存了下来只保存了10次消息。