candale icon

Pipes with array

candale | PRO | 06/11/13 09:59:21 AM UTC | 0 ⭐ | 209 👁️ | Never ⏰ | []
C |

1.22 KB

|

None

|

0 👍

/

0 👎

#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
 
int main()
{
    int fdTC[2], fdTS[2];
    if(pipe(fdTC)== -1)
    {
        perror("Could not create pipe\n");
        exit(1);
    }
    if(pipe(fdTS) == -1)
    {
        close(fdTC[0]);
        close(fdTC[1]);
        perror("Could not create pipe\n");
        exit(1);
    }
    
    int ch;
    
    while(1)
    {
        ch= fork();
        if(ch == 0)
        {
            printf("Enter the number of integers: ");
            int n;
            scanf("%d", &n);
            write(fdTS[1], &n, sizeof(int));
            int i=0, c;
            for(i=0;i<n;i++)
            {
                scanf("%d", &c);
                write(fdTS[1], &c, sizeof(int));
            }
            
            read(fdTC[0], &c, sizeof(int));
            read(fdTC[0], &i, sizeof(int));
            
            printf("Max: %d Min: %d\n", c, i);  
            exit(0);
        }
        else if(ch > 0)
        {
            int n;
            read(fdTS[0], &n, sizeof(int));
            int i=0, max=-100000, min=100000;
            for(i=0;i<n;i++)
            {
                int c;
                read(fdTS[0], &c, sizeof(int));
                if(c > max)
                    max = c;
                if(c < min)
                    min = c;
            }
            
            write(fdTC[1], &max, sizeof(int));
            write(fdTC[1], &min, sizeof(int));
        }
        else
            perror("Could not create child\n");
    }
}

Comments