Question: Suppose we have three programs aaa, bbb, ccc which are already developed, compiled and ready to execute. The first two, namely aaa and bbb, simply


Suppose we have three programs aaa, bbb, ccc which are already developed, compiled and ready to execute. The first two, namely aaa and bbb, simply do some random amount of computation and write a character (respectively, 'A' and 'B to STDOUT_FILENO in a loop that is repeated 1000 times. If we run both programs at the same time, we might see different numbers of As and Bs such as AABBBAAABBBBABB. . . on the screen. The third program, namely ccc, reads a sequence of characters from STDIN_FILENO and simply counts the number of the same characters that appear consecutively and writes that information to STDOUT_FILENO. For example, if we give the above possible sequence of As and Bs to ccc, it will print A 2, B 3, A 3, B 4, A 1, B 2, .. . on the screen. Now you are asked to write a program (say xyz.c) which can execute aaa, bbb, and ccc as children and connect them in a way that the output of aaa and bbb will go into a single pipe. Then, ccc will get the mixed sequence of characters from this pipe and do its job. Your program (parent) will wait for all three children to be done, then it will quit! Convince yourself that your program should create the following relation through a pipe! childl (aaa) [1] ---> I---| child2 (bbb) [1] ->I I mypipe -> [0]child3 (ccc) You can ignore most of the error checking to make your code clear, but you need to close all unnecessary file/pipe descriptors and need to check what fork0 returns to detect child/parent proceees and/or what read0/writeO returns to detect end of file etc. To execute a given program simply use execl ("aaa", "aaa" , NULL); etc. /your implementation of xyz.c / #include
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
