#include #include #include #include #include #include "simpleipc.c" #include void childfun(int pipe); void parentfun(int pipe); int main() { int result; pid_t procid; // needed for fork int pfd[2]; result = pipe(pfd); if (result<0) { printf("pipe creation failed\n"); exit(1);} procid = fork(); if (procid == 0) childfun(pfd[0]); else parentfun(pfd[1]); exit(0); } // parent acts as server and serves x-squared to client(child) void parentfun(int pipe) { int result; double x, y; while (1<2) { printf("parent: ready to serve\n"); result = read(pipe,&x,sizeof(double)); y = x * x; write(pipe,&y,sizeof(double)); for(result=0;result<25000000;result++) {} } // while } // parentfun void childfun(int pipe) { int result; double x,y; x = 2.0; while (x<10000.0) { write(pipe,&x,sizeof(double)); result = read(pipe,&y,sizeof(double)); if (result == sizeof(double)) { printf("child: received %.5f\n",y); x = y; } for(result=0;result<25000000;result++) {} } close(pipe); } // childfun