Pipe
Pipe
h>
#include <unistd.h>
int main()
{
int pipefds1[2],pipefds2[2];
int returnstatus1,returnstatus2;
int pid;
char writemessage1[20]={"HI"};
char writemessage2[20]={"Hello"};
char readmessage[20];
returnstatus1=pipe(pipefds1);
if (returnstatus1 == -1)
{
printf("Unable to create pipe\n");
return 1;
}
returnstatus2=pipe(pipefds2);
if (returnstatus2 == -1)
{
printf("Unable to create pipe\n");
return 1;
}
pid=fork();
if (pid!=0)
{
//Parent Process
close(pipefds1[0]);
close(pipefds2[1]);
printf("Writing to pipe by parent- %s\n",writemessage1);
write(pipefds1[1],writemessage1,sizeof(writemessage1));
read(pipefds2[0],readmessage,sizeof(readmessage));
printf("Reading from pipe by parent- %s\n",readmessage);
}
else
{
close(pipefds2[0]);
close(pipefds1[1]);
printf("Writing to pipe by child- %s\n",writemessage2);
write(pipefds2[1],writemessage2,sizeof(writemessage2));
read(pipefds1[0],readmessage,sizeof(readmessage));
printf("Reading from pipe by child- %s\n",readmessage);
}
return 0;
}