// 创建两个子进程,一个子进程向管道写入数据,另一个子进程从管道读取数据。 #include #include #include #include #include int main() { int fd[2]; int f = pipe(fd); if (f == -1) { perror("pipe"); return 1; } int i = 0; for (; i < 2; i++) { pid_t pid = fork(); if (pid == 0) break; // 子进程跳出循环 } // 子进程1代码 if (i == 0) { close(fd[0]); // 子进程1关闭管道读端 char msg[32] = ""; printf("请在子进程 1 中输入一段内容: "); scanf("%s", msg); write(fd[1], msg, strlen(msg) + 1); // 包括'\0' , 写入管道 close(fd[1]); // 关闭管道写端 return 0; // 子进程1退出 } // 子进程2代码 else if (i == 1) { close(fd[1]); // 子进程2关闭管道写端 char buf[32] = ""; int len = read(fd[0], buf, sizeof(buf)); printf("子进程 2 收到子进程 1 数据: %s\n", buf); close(fd[0]); // 关闭管道读端 return 0; // 子进程2退出 } // 父进程代码 waitpid(0, NULL, 0); // 等待所有子进程退出 return 0; }