mirror of
https://github.com/riba2534/TCP-IP-NetworkNote.git
synced 2026-05-07 14:01:51 +08:00
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:
@@ -10,7 +10,7 @@
|
||||
|
||||
下图是基于管道(PIPE)的进程间通信的模型:
|
||||
|
||||

|
||||

|
||||
|
||||
可以看出,为了完成进程间通信,需要创建进程。管道并非属于进程的资源,而是和套接字一样,属于操作系统(也就不是 fork 函数的复制对象)。所以,两个进程通过操作系统提供的内存空间进行通信。下面是创建管道的函数。
|
||||
|
||||
@@ -70,13 +70,13 @@ Who are you?
|
||||
|
||||
可以从程序中看出,首先创建了一个管道,子进程通过 fds[1] 把数据写入管道,父进程从 fds[0] 再把数据读出来。可以从下图看出:
|
||||
|
||||

|
||||

|
||||
|
||||
#### 11.1.2 通过管道进行进程间双向通信
|
||||
|
||||
下图可以看出双向通信模型:
|
||||
|
||||

|
||||

|
||||
|
||||
下面是双向通信的示例:
|
||||
|
||||
@@ -133,7 +133,7 @@ Child proc output: Thank you for your message
|
||||
|
||||
当一个管道不满足需求时,就需要创建两个管道,各自负责不同的数据流动,过程如下图所示:
|
||||
|
||||

|
||||

|
||||
|
||||
下面采用上述模型改进 `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) 使用,运行结果如下图:
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
从图上可以看出,服务端已经生成了文件,把客户端的消息保存了下来,只保存了10次消息。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user