#include <unistd.h>
#include <iostream>
#include <sys/socket.h>
#include <string.h>
using namespace std;
int main(int argc, char** argv)
{
int sv[2];
if(socketpair(AF_UNIX,SOCK_STREAM,0,sv)<0)
{
perror("socketpair:");
return -1;
}
pid_t id=fork();
if(id==0) //subprocess
{
char* msg="i am child\n";
char buffer[1024]={0};
close(sv[1]);
while(1){
write(sv[0],msg,strlen(msg));
sleep(1);
int len=read(sv[0],buffer,sizeof(buffer));
if(len>0){
buffer[len]='\0';
std::cout<< "children recv from parent : " << buffer << std::endl;
}
}
}else if(id>0){
char* msg ="i am dad";
char buffer[1024]={0};
close(sv[0]);
while(1){
int len= read(sv[1],buffer,sizeof(buffer));
if(len>0){
buffer[len]=0;
std::cout<< "dad recv from child: " << buffer<< std::endl;
}
sleep(1);
write(sv[1],msg,strlen(msg));
}
}
return 0;
}