#include #include #include #include #include #include #include #include #include #include #include int main() { pid_t procid; // used in fork int pfd[2]; // pipe descriptors char buffer0[256]; char buffer1[256]; char buffer2[256]; int x,y,z; // create pipe x = pipe(pfd); if (x != 0) { printf("pipe creation failed\n"); exit(1); } // parent will use pfd[0] to r/w, child use pfd[1] sprintf(buffer2,"%d",pfd[1]); // make fd into string procid = fork(); // create child if (procid == 0) { x = execl("/usr/openwin/bin/xterm", "/usr/openwin/bin/xterm", "-e","./proc1",buffer2,NULL); printf("execl failed\n"); exit(1); } // child // back to parent: //write some string to child: sprintf(buffer0,"proc0's string"); write(pfd[0],buffer0,strlen(buffer0)+1); printf("proc0: sent string to proc1\n"); // read(pfd[1] .. this will read your own data! read(pfd[0],buffer1,256); printf("proc0: received %s\n",buffer1); close(pfd[0]); close(pfd[1]); close(pfd[0]); exit(0); }