Write and run a c program on unix that creates four new


Write and run a C program on UNIX that creates four new processes: A, B, C, and D. When the original process creates the new processes, it passes them all the same pipe that they can use to send data to the original process, which will serve as a logging process, displaying each line it receives along with a time stamp. A pipeline is to exist between A and B, another between

B and C, and another between B and D. Including the shared pipe back to the logging process and these three pipes (A-B, B-C, B-D) there are four pipes. Process A generates 10 records consisting of the letter C or D (picked at random for each record) along with the record number (1 byte ASCII) issued sequentially from 0 to 9 and sends it to process B. Process A also sends a log message something like: A sent process B 'D1' to the logging process.

Process B reads from the pipe connecting it to A. For each record it reads, it will send it to the process indicated by the first character, along with sending an appropriate log message to the logging process. For example, if it receives a message containing 'C2', it sends the message to process C. After sending the logging message, process B waits one second.

Process C reads its pipe and for each message received it sends the logging process an appropriate message.

Process D reads its pipe and for each message received it sends the logging process an appropriate message. Process D then waits 5 seconds after every time it receives a message. The logging process should terminate when it receives 30 messages, which is 10 messages from A to B, a total of 10 messages from either B to C or B to D, and then a total of 10 more messages from either C or D indicating receipt. Implement some way to terminate the other processes at appropriate times. Here is pseudocode for the pipe program:

Main program

Include header files

Initialize variables

Create log pipe

Create A-B pipe

Create B-C pipe

Create B-D pipe

Fork process A

Loop 10 times

Create 10 records, starting with 'C' or 'D' chosen randomly

followed by a number from 0 to 9 issued in sequential order

Write each record to the A-B pipe

Write a message to the log pipe

End loop

Exit process A

Fork process B

Loop 10 times

Read a record from the A-B pipe

Write records starting with 'C' to the B-C pipe

Write records starting with 'D' to the B-D pipe

Write a message to the log pipe

Delay for 1 second

End loop

Exit process B

Fork process C

Loop until no more messages

Read a record from the B-C pipe

Write a message to the log pipe

End loop

Exit process C

Fork process D

Loop until no more messages

Read a record from the B-D pipe

Write a message to the log pipe

Delay 5 seconds

End loop

Exit process D

Loop 30 times (Logging process - not forked)

Read a message from the log pipe

Add the time to the message

Print the message to the screen

End loop

Kill process A if necessary

Kill process B if necessary

Kill process C if necessary

Kill process D if necessary

End

 

Request for Solution File

Ask an Expert for Answer!!
Management Theories: Write and run a c program on unix that creates four new
Reference No:- TGS01012710

Expected delivery within 24 Hours