使用父进程创建四个子进程,在进程间用pipe函数进行通信。
时间: 2023-06-12 08:04:31 浏览: 169
下面是一个示例代码,其中父进程创建了四个子进程,每个子进程向父进程发送一个整数,父进程接收到四个整数后将它们相加并输出结果。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
int fd[2]; // 用于存储pipe返回的两个文件描述符
int sum = 0; // 用于存储四个整数相加的结果
pid_t pid;
int i;
if(pipe(fd) < 0) // 创建管道
{
perror("pipe error");
exit(EXIT_FAILURE);
}
for(i = 0; i < 4; i++) // 创建四个子进程
{
pid = fork();
if(pid < 0)
{
perror("fork error");
exit(EXIT_FAILURE);
}
else if(pid == 0) // 子进程
{
close(fd[0]); // 关闭读端
int num = i + 1; // 子进程要发送的整数
write(fd[1], &num, sizeof(num)); // 将整数写入管道
close(fd[1]); // 关闭写端
exit(EXIT_SUCCESS);
}
}
close(fd[1]); // 父进程关闭写端
for(i = 0; i < 4; i++) // 父进程接收四个整数并相加
{
int num;
read(fd[0], &num, sizeof(num)); // 从管道读取整数
sum += num;
}
close(fd[0]); // 父进程关闭读端
for(i = 0; i < 4; i++) // 等待四个子进程退出
{
wait(NULL);
}
printf("sum = %d\n", sum); // 输出四个整数相加的结果
return 0;
}
```
阅读全文