Thursday, April 12, 2012

PipeLining


#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
void
read_from_pipe(int file)
{
 FILE *stream;
 int c;
 stream=fdopen(file,"r");
 while((c=fgetc(stream))!=EOF)
 putchar(c);
 fclose(stream);
}

void
write_to_pipe(int file)
{
 FILE *stream;
 stream=fdopen(file,"w");
 fprintf(stream,"Hello,world!\n");
 fprintf(stream,"Gud bye,world!\n");
 fclose(stream);
}

int main (void)
{
 pid_t pid;
 int mypipe[2];
 if (pipe(mypipe))
 {
  fprintf(stderr,"pipe failed \n");
  return EXIT_FAILURE;
 }
 pid=fork();
 if(pid==(pid_t)0)
 {
  close(mypipe[1]);
  read_from_pipe(mypipe[0]);
  return EXIT_SUCCESS;
 }
 else if (pid<(pid_t)0)
 {
  fprintf(stderr,"forkfailed \n");
  return EXIT_FAILURE;
 }
 else
 {
  close(mypipe[0]);
  write_to_pipe(mypipe[1]);
  return EXIT_SUCCESS;
 }
}

No comments:

Post a Comment