#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