我正在尝试使用单个管道创建3个子进程,其中每个子进程shouold提示用户输入int然后将其写入管道。父进程应读取管道并显示最大的int。
以下是我对自己知识有限的看法:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
main(int argc, char argv[]) {
int input[3];
int i;
int fd[2];
int result;
if(pipe(fd) == (-1))
fprintf(stderr, "pipe failed\n");
for(i = 0; i < 3; i++) {
if(fork() == 0){//child
printf("Enter a number: ");
scanf("%d", &input[i]);
printf("\n");
}
}
if(input[0] >= input[1]){
if(input[0] >= input[2])
result = input[0];
else
result = input[2];
}
else if(input[1] >= input[2]){
if(input[1] >= input[0])
result = input[1];
else
result = input[0];
}
else if(input[2] >= input[0]){
if(input[2] >= input[1])
result = input[2];
else
result = input[1];
}
printf("The max of the three is: %d", result);
}
当我尝试在终端中运行时,我得到了这个:
The max of the three is: 4195760Enter a number: $ Enter a number:
Enter a number:
The max of the three is: 4195760The max of the three is: 4195760Enter a number:
The max of the three is: 4195760
请对我说清楚。