Create a series of 3 processes that pass information from


Create a series of 3 processes that "pass" information from one to another. The producer program will read a line of data from a file and periodically (based on a random delay) send it to the next program (the filter) using shared memory segments. The filter program will read the data from the first shared memory segment, do a transformation to the data (change lower case letters to upper case letters, and visa versa) and then periodically (based on a random delay) pass the data on to the consumer program through a second shared memory section. The consumer will read the data from SM 2, perform a reverse transformation on the data, and store the results in an output file. For the submitted program, only the transformed information (as seen by the filter) should be printed to the console.

To simplify the use of the shared memory segments, and to manage the overall program, a fourth program (the main program) should be used to create SM 1 and SM 2 and start up the above processes. The main program will take as a parameter the number of seconds that this program should run (something in the range of 10 to 20 seconds). The input file should be named "input.txt" and the output file should be named "output.txt". (The main program could also take other command line parameters such as input and output file names, however you can hardcode these or query the user. ...The) main program will then create the shared memory segments and the processes.
The program should use an alarm timer to determine when to shut down. (we may use the kill() or killall() functions to close down the created processes.)

This is my pseudocode implementation of the filter program .

/*********************************************
*
* File Name: filter.c
*
* Author: Cotter
*
* This is part of exercise #5 from CS431
* This program will
* receive and transmit asynchronously by
* reading information in from a shared memory segment a
* character at a time, changing the case of
* the letter if it is alphabetic, and then
* outputting the character to an output SM.
*
**********************************************/
#include
#include
#include
#include
#include
#include

int main ()
{
// Local variables
char input[25];
const int timeToProduce = 3;
// Announce existence.
cout << "Filter: Alive and running\n" << endl;
// Open connection to SM 1, and to SM 2
// Processing loop
while(1)
{

// Be sure to use sync mechanisms! (semaphore)
if (input = get a string from SM1) == EOF)
jump out of loop
Sleep(rand( ) % timeToProduce);
// For each character "c" in "input"...
//Convert from lower to upper case and visa versa
if((c >= 'a') && (c <= 'z'))
c = c-'a' + 'A';
else if((c >= 'A') && (c <= 'Z'))
c = c-'A' + 'a';
// output results to console
// output results to SM2
}
// Terminating
cout << "Filter: Terminating" << endl;
return 0;
}

Solution Preview :

Prepared by a verified Expert
C/C++ Programming: Create a series of 3 processes that pass information from
Reference No:- TGS01484402

Now Priced at $20 (50% Discount)

Recommended (90%)

Rated (4.3/5)