#include "main.h" //====================================================================== /* $ ps aux # a:all users, u:detailled, x:daemons // look at bash PID Socket = bidirectionnal ; choose an extremity PARENT CHILD [1] >> SOCKFD >> [0] << SOCKFD << */ //====================================================================== int main(int argc, char **argv) { int ok; int value=100; char *msg; char buffer[0x100]; int sockFd[2]; bool usePause=false; bool useSock=false; // Parse Args for(int i=1;i>>>>>>> CREATE CHILD >>>>>>>>>>>>>>>>>>>>>>>> switch(child) { case -1: perror("fork"); return EXIT_FAILURE; break; //############ CHILD CODE ###################################### case 0 : close(sockFd[1]); // child will not use this end msg="first message from child to parent\n"; write(sockFd[0],msg,strlen(msg)); if(usePause) { sleep(1); } msg="second message from child to parent\n"; write(sockFd[0],msg,strlen(msg)); shutdown(sockFd[0],SHUT_WR); // done with writing for(;;) { int r=read(sockFd[0],buffer,0xFF); if(r==0) break; // end of file if(r==-1) { perror("read"); exit(1); } buffer[r]='\0'; printf("child received [%s]\n",buffer); } close(sockFd[0]); // done with reading break; //############ PARENT CODE ##################################### default : close(sockFd[0]); // parent will not use this end for(;;) { int r=read(sockFd[1],buffer,0xFF); if(r==0) break; // end of file if(r==-1) { perror("read"); exit(1); } buffer[r]='\0'; printf("parent received [%s]\n",buffer); } const char *msg="first message from parent to child\n"; write(sockFd[1],msg,strlen(msg)); if(usePause) { sleep(1); } msg="second message from parent to child\n"; write(sockFd[1],msg,strlen(msg)); close(sockFd[1]); // done with writing int status; pid_t p=waitpid(child,&status,0); // PARENT MUST WAIT FOR HIS CHILD if(p==-1) { perror("waitpid"); return EXIT_FAILURE; } break; } return EXIT_SUCCESS; } //^^^^^^^^^^^^^^^^^^^^^^^^^^ EOF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^