#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<string.h>
#define SIZE 25
int main(){
char read_msg[SIZE];
char write_msg[SIZE];
int fd_p[2];
int fd_c[2];
pid_t pid;
int status;
if(pipe(fd_p) == -1 || pipe(fd_c) == -1)
return 0;
pid=fork();
if(pid == -1){
printf("The child is not created\n"); return 0;}
else if (pid > 0){
close(fd_p[0]);
close(fd_c[1]);
printf("Write the message from parents end"); write
(fd_p
[1],write_msg
,strlen(write_msg
)+1); close(fd_p[1]);
read(fd_c[0],read_msg,SIZE);
printf("The message is %s read by %d\n",read_msg
,pid
); close(fd_c[0]);
}
else{
close(fd_p[1]);
close(fd_c[0]);
read(fd_p[0],read_msg,SIZE);
printf("The message is %s read by %d\n",read_msg
,pid
); close(fd_p[0]);
printf("Write the message from child end"); close(fd_c[0]);
write
(fd_c
[1],write_msg
,strlen(write_msg
)+1); close(fd_c[1]);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8dW5pc3RkLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgojaW5jbHVkZTxzeXMvdHlwZXMuaD4KI2luY2x1ZGU8c3lzL3dhaXQuaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgojZGVmaW5lIFNJWkUgMjUKCmludCBtYWluKCl7CmNoYXIgcmVhZF9tc2dbU0laRV07CmNoYXIgd3JpdGVfbXNnW1NJWkVdOwppbnQgZmRfcFsyXTsKaW50IGZkX2NbMl07CnBpZF90IHBpZDsKaW50IHN0YXR1czsKCgoJaWYocGlwZShmZF9wKSA9PSAtMSB8fCBwaXBlKGZkX2MpID09IC0xKQoJcmV0dXJuIDA7CgoJcGlkPWZvcmsoKTsKCgkKCQlpZihwaWQgPT0gLTEpewoJCXByaW50ZigiVGhlIGNoaWxkIGlzIG5vdCBjcmVhdGVkXG4iKTsKCQlyZXR1cm4gMDt9CgoJCWVsc2UgaWYgKHBpZCA+IDApewoKCQkKCQljbG9zZShmZF9wWzBdKTsKCQljbG9zZShmZF9jWzFdKTsKCQlwcmludGYoIldyaXRlIHRoZSBtZXNzYWdlIGZyb20gcGFyZW50cyBlbmQiKTsKCQlzY2FuZigiJXMiLHdyaXRlX21zZyk7CgkJd3JpdGUoZmRfcFsxXSx3cml0ZV9tc2csc3RybGVuKHdyaXRlX21zZykrMSk7CgkJY2xvc2UoZmRfcFsxXSk7CgoKCQlyZWFkKGZkX2NbMF0scmVhZF9tc2csU0laRSk7CgkJcHJpbnRmKCJUaGUgbWVzc2FnZSBpcyAlcyByZWFkIGJ5ICVkXG4iLHJlYWRfbXNnLHBpZCk7CgkJY2xvc2UoZmRfY1swXSk7CgkJCQoJCX0KCgkJZWxzZXsKCQkKCQljbG9zZShmZF9wWzFdKTsKCQljbG9zZShmZF9jWzBdKTsKCQlyZWFkKGZkX3BbMF0scmVhZF9tc2csU0laRSk7CgkJcHJpbnRmKCJUaGUgbWVzc2FnZSBpcyAlcyByZWFkIGJ5ICVkXG4iLHJlYWRfbXNnLHBpZCk7CgkJY2xvc2UoZmRfcFswXSk7CgoJCQoJCXByaW50ZigiV3JpdGUgdGhlIG1lc3NhZ2UgZnJvbSBjaGlsZCBlbmQiKTsKCQlzY2FuZigiJXMiLHdyaXRlX21zZyk7CgkJY2xvc2UoZmRfY1swXSk7CgkJd3JpdGUoZmRfY1sxXSx3cml0ZV9tc2csc3RybGVuKHdyaXRlX21zZykrMSk7CgkJY2xvc2UoZmRfY1sxXSk7CgkgIH0KcmV0dXJuIDA7Cn0=