Files
TCP-IP-NetworkNote/ch11/homework/kehou4.c
riba2534 5625eea472 docs: 全面校对全部章节文档与示例代码
通过多智能体工作流对 19 章笔记(README.md)与 96 个 .c 示例代码做深度
审查与对抗性验证,修复 317 处确认问题,涵盖:

技术正确性:
- 修复缓冲区溢出:echo_mpserv.c / echo_storeserv.c 等的 read(buf, BUFSIZ)
  改为 BUF_SIZE(buf 仅 30 字节,BUFSIZ 远大于此)
- 修复 open() 缺少 mode 参数:low_open.c / fd_seri.c / desto.c 等
  O_CREAT 调用补 0644(原导致 low_read 链路失败)
- 修复 feof 循环 off-by-one:news_sender.c / echo_stdserv.c 改用 fgets
  返回值判断
- 修复线程竞态:chat_server.c / webserv_linux.c 的 &clnt_sock 栈地址
  传子线程改为 malloc 分配 + free
- 修复索引混淆:char_EPLTserv.c 错用 clnt_sock 查找改为 ep_events[i].data.fd
- 修复格式化符:thread4.c 的 sizeof 用 %d 改为 %zu
- 修正习题答案:ch01 fd 序号、ch13 MSG_OOB 加粗项、ch09 Nagle 等

文档规范:
- 统一术语:IPv4/IPv6、接收(receive)/连接(connection)
- 修正错别字:occured→occurred、cooffee→coffee、Usgae→Usage、
  eerror→error、proess→process 等
- 修复病句、补全习题答案解释
- GitHub 绝对 URL 改为相对路径,统一项目引用规范
- 同步根 README.md(前言 + 19 章合并)

另:重命名 ch10/remove_zomebie.c → remove_zombie.c(修正拼写)

所有 .c 文件经 gcc 编译验证通过(ch17 epoll 文件因 macOS 无 sys/epoll.h
跳过,已人工复核)。
2026-06-28 12:47:46 +08:00

42 lines
1.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define BUF_SIZE 30
int main(int argc, char *argv[])
{
int fds1[2], fds2[2];
//const char* 以"\0"作为结束符
char str1[] = "Do you like coffee?";
char str2[] = "I like coffee";
char str3[] = "I like long legs";
char * str_arr[] = {str1, str2, str3};
char buf[BUF_SIZE];
pid_t pid;
int i;
pipe(fds1), pipe(fds2);
pid = fork();
if(pid == 0)
{
for(i = 0; i < 3; ++i)
{
//strlen所作的是一个计数器的工作它从内存的某个位置可以是字符串开头中间某个位置甚至是某个不确定的内存区域开始扫描
//直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')
write(fds1[1], str_arr[i], strlen(str_arr[i]) + 1);//这里长度必须加上1将字符串结束符加进去否则会发生消息错乱
read(fds2[0], buf, BUF_SIZE);
printf("子进程收到的消息:%s\n", buf);
}
}
else
{
for(i = 0; i < 3; ++i)
{
read(fds1[0], buf, BUF_SIZE);
printf("父进程收到的消息:%s\n", buf);
write(fds2[1], str_arr[i], strlen(str_arr[i]) + 1);
}
}
return 0;
}