#include<dirent.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main( )
{
int canal_son[ 2 ] ;
int canal_father[ 2 ] ;
pipe( canal_father) ;
pipe( canal_son) ;
if ( fork( ) == 0 )
{
close( canal_father[ 1 ] ) ;
close( canal_son[ 0 ] ) ;
int j;
for ( j= 0 ; j< 5 ; j++ )
{
char mesaj_father[ 20 ] = { 0 } ;
if ( read( canal_father[ 0 ] , mesaj_father, sizeof ( mesaj_father) ) > 0 )
{
printf ( "The message from father is: %s \n " , mesaj_father
) ; write( canal_son[ 1 ] , "son" , 3 ) ;
}
}
}
else
{
close( canal_father[ 0 ] ) ;
close( canal_son[ 1 ] ) ;
int i= 5 ;
for ( i= 0 ; i< 5 ; i++ )
{
char mesaj_son[ 20 ] = { 0 } ;
write( canal_father[ 1 ] , "mesas" , 5 ) ;
if ( read( canal_son[ 0 ] , mesaj_son, sizeof ( mesaj_son) ) > 0 )
printf ( "we are in father:%s\n " , mesaj_son
) ; }
}
return 0 ;
}
I2luY2x1ZGU8ZGlyZW50Lmg+CiNpbmNsdWRlPHN0cmluZy5oPgojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8dW5pc3RkLmg+CgppbnQgbWFpbigpCnsKICAgIGludCBjYW5hbF9zb25bMl07CiAgICBpbnQgY2FuYWxfZmF0aGVyWzJdOwogICAgcGlwZShjYW5hbF9mYXRoZXIpOwogICAgcGlwZShjYW5hbF9zb24pOwogICAgCiAgICBpZiAoZm9yaygpPT0wKQogICAgewogICAgICAgIGNsb3NlKGNhbmFsX2ZhdGhlclsxXSk7CiAgICAgICAgY2xvc2UoY2FuYWxfc29uWzBdKTsKICAgICAgICAKICAgICAgICBwcmludGYoIlNvbiAlZFxuIixnZXRwaWQoKSk7CiAgICAgICAgaW50IGo7CiAgICAgICAgZm9yKGo9MDtqPDU7aisrKQogICAgICAgIHsKICAgICAgICAgICAgY2hhciBtZXNhal9mYXRoZXJbMjBdID0gezB9OwogICAgICAgICAgICBpZiAocmVhZChjYW5hbF9mYXRoZXJbMF0sbWVzYWpfZmF0aGVyLHNpemVvZihtZXNhal9mYXRoZXIpKSA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiVGhlIG1lc3NhZ2UgZnJvbSBmYXRoZXIgaXM6ICVzIFxuIixtZXNhal9mYXRoZXIpOwogICAgICAgICAgICAgICAgd3JpdGUoY2FuYWxfc29uWzFdLCJzb24iLDMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGNsb3NlKGNhbmFsX2ZhdGhlclswXSk7CiAgICAgICAgY2xvc2UoY2FuYWxfc29uWzFdKTsKICAgICAgICAKICAgICAgICBpbnQgaT01OwogICAgICAgIGZvciAoaT0wO2k8NTtpKyspCiAgICAgICAgewogICAgICAgICAgICBjaGFyIG1lc2FqX3NvblsyMF0gPSB7MH07CiAgICAgICAgICAgIHdyaXRlKGNhbmFsX2ZhdGhlclsxXSwibWVzYXMiLDUpOwogICAgICAgICAgICBpZiAocmVhZChjYW5hbF9zb25bMF0sbWVzYWpfc29uLHNpemVvZihtZXNhal9zb24pKSA+IDApCiAgICAgICAgICAgICAgICBwcmludGYoIndlIGFyZSBpbiBmYXRoZXI6JXNcbiIsbWVzYWpfc29uKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==