/*-------------------------------------------------------------------*/ /* testpipe.c */ /* The pipe system call. */ /*-------------------------------------------------------------------*/ #include #include int main(int argc, char *argv[]) { int piPipeFd[2]; int iProducerPid; int iConsumerPid; int iPipeStatus; iPipeStatus = pipe(piPipeFd); if (iPipeStatus == -1) { perror(argv[0]); return 1; } iProducerPid = fork(); /* Fork a producer */ if (iProducerPid == 0) { /* Producer */ char pcBuffer[] = "somedata"; close(piPipeFd[0]); write(piPipeFd[1], pcBuffer, 9); close(piPipeFd[1]); exit(0); } iConsumerPid = fork(); /* Fork a consumer. */ if (iConsumerPid == 0) { /* Consumer */ char pcBuffer[9]; close(piPipeFd[1]); read(piPipeFd[0], pcBuffer, 9); printf("Consumed %s.\n", pcBuffer); close(piPipeFd[0]); exit(0); } close(piPipeFd[0]); close(piPipeFd[1]); return 0; } /* Sample execution: $ testpipe Consumed somedata. $ */