#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid1,pid2;
int fd[2];
char outdata[100],indata[100];
if(pipe(fd)<0){
printf("Create pipe error!!!\n");
return -1;
}
while((pid1=fork())==-1);
if(pid1==0){
lockf(fd[1],1,0);
sprintf(outdata,"Child process pid1 is write data!\n");
write(fd[1],outdata,50);
sleep(5);
lockf(fd[1],0,0);
exit(0);
}
else {
while((pid2=fork())==-1);
if(pid2==0){
lockf(fd[1],1,0);
sprintf(outdata,"Child process pid2 is writeing data!\n");
write(fd[1],outdata,50);
sleep(5);
exit(0);
}
else{
wait(0);
read(fd[0],indata,50);
printf("%s\n",indata);
wait(0);
read(fd[0],indata,50);
printf("%s\n",indata);
close(fd[0]);
close(fd[1]);
exit(0);
}
}
}
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid1,pid2;
int fd[2];
char outdata[100],indata[100];
if(pipe(fd)<0){
printf("Create pipe error!!!\n");
return -1;
}
while((pid1=fork())==-1);
if(pid1==0){
lockf(fd[1],1,0);
sprintf(outdata,"Child process pid1 is write data!\n");
write(fd[1],outdata,50);
sleep(5);
lockf(fd[1],0,0);
exit(0);
}
else {
while((pid2=fork())==-1);
if(pid2==0){
lockf(fd[1],1,0);
sprintf(outdata,"Child process pid2 is writeing data!\n");
write(fd[1],outdata,50);
sleep(5);
exit(0);
}
else{
wait(0);
read(fd[0],indata,50);
printf("%s\n",indata);
wait(0);
read(fd[0],indata,50);
printf("%s\n",indata);
close(fd[0]);
close(fd[1]);
exit(0);
}
}
}