在C中使用管道

时间:2015-05-07 10:37:32

标签: c pipe parent-child parent child-process

我正在尝试使用单个管道创建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

请对我说清楚。

0 个答案:

没有答案