Chat with us, powered by LiveChat C++ program using pipe fork an other C++ functions. | Writedemy

C++ program using pipe fork an other C++ functions.

C++ program using pipe fork an other C++ functions.

1) Call fork() to create a parent/child setup.

2) Set up a pipe between parent and child so that the parent is the producer and the child is the consumer.

3) The interlacing of messages printed by different processes will depend on the timing of your program and does not have to match the sample output. However, individual messages should not be broken up. Prevent this using the same method as in HW2:

a) Issue the cout << unitbuf command at the beginning of your program.

b) Use only use one extraction operator (“<<”) to print each message, using stringstream to build the message before printing and using \n instead of endl to avoid using a second extraction operator.

Parent processing:

1) Read input file from the file specified a the command line parameter. If no parameter is given, use as a default ~t90rkf1/d480/dhw4/resv.txt.

2) For each record do the following:

a) Write the length of the entry to the pipe as a three-digit alpha field (i.e., no terminator).

b) Write the data to the pipe as a C-string (i.e., with a terminator).

c) Print the data and its length (not including the terminator).

3) At the end of the file, print a count of the number of input records read.

You will find it helpful to log your I/O on standard output, e.g.:

Parent: Reading: 09JUN2014/WN123/MDW/BWI/etc.

Writing: __ bytes: 09JUN2014 etc.

(blank line)

Reading: (etc.)

Child processing:

1) Read each entry as follows:

a) Read the length from the pipe and convert it to a number.

b) Read the specified number of bytes. Add 1 to include the terminator.

c) Break the entry into fixed-length fields and save the fields in a vector of pointers to objects, just as in HW1.

2) Use C++ string functions (not C string functions or subscript use) or regular expressions to break the input record into individual entries. Build keys with fixed-length fields.

3) Use a sort function to sort the entries by date, flight number, city pair, last name and first name. A city pair consists of an origin and destination city. Date, flight number and city pair determine a flight leg. For debugging purposes, it is always a good idea to use a sequence-preserving sort so that the same input will always produce the same output. For a vector, that is the stable_sort function. The record locator (=airline lingo for reservation ID) is printed but is not a sort key, since it doesn’t matter to anyone but the passenger.

4) Print the entries with subtotals by flight leg, flight number, date, year/month, and grand total. For example:

2014 September 26 WN 123 MDW-BWI ABC478 Kelly, Gary

WN 123 MDW-BWI ABC456 Kelly, Mary

2014 September 26 WN 123 MDW-BWI 2 * Passengers this leg

2014 September 26 WN 123 BWI-FLL ABC499 Mouse, Mickey

2014 September 26 WN 123 BWI-FLL 1 * Passengers this leg

2014 September 26 WN 123 3 ** Passengers all legs

2014 September 26 3 *** Date total

2014 September 27 WN 123 FLL-MSY ABC499 Mouse, Mickey 2014 September 27 WN 123 FLL-MSY 1 * Passengers this leg

2014 September 27 WN 123 1 ** Passengers all legs

2014 September 27 1 *** Date total

2014 September 4 **** Month total

2014 October 1 WN 123 FLL-MSY ABC487 Mouse, Mickey 2014 October 1 WN 123 FLL-MSY 1 * Passengers this leg

2014 October 1 WN 123 1 ** Passengers all legs

2014 October 1 1 *** Date total

2014 October 1 **** Month total

5 ***** Grand total

Leave a space before each total line except the flight leg total.

Make sure that all of your columns line up and that you print suitable information on each total line.

Your TA may use a different file to test your program.

Hints:

Use the man command to learn the usage of the following system calls and user functions.

pipe( ) read( ) write( ) atoi( )

The following files were used in class to demonstrate binary I/O.

~t90rkf1/d480/dio/dbinary/*.cpp

Note that each of these just reads or writes a single line. For this program, you will need to write a loop that reads multiple records from a binary file. The man page for read explains how to tell when end of file has been reached for a binary file.

The following files will be used in class to illustrate subtotal processing:

~t90rkf1/d480/sub3.cpp single-level subtotal processing

~t90rkf1/d480/msub1.cpp multi-level subtotal processing

~t90rkf1/d480/sub-pseudo.cpp pseudocode explanation of subtotal processing

Some examples of building a comparison function for a sort can be found here::

~t90rkf1/d480/dsort/*.cpp

Further detail about regular expression processing in C++ can be found in this example:

~t90rkf1/d480/regex1d.cpp

Testing suggestions:

Write your program in the following order. Make sure each part works correctly before you go on to the next. Your TA has been instructed not to discuss later sections with you until you have completed the earlier sections correctly.

1. First, make sure that you can read the input correctly and write it to a physical binary file.

2. Second, make sure that you can read your physical binary file correctly and print the detail lines.

3. Then combine your two pieces of code, replacing the physical file with a pipe.

4. Finally, add the total processing.

Style requirements:

Do not use printf, sprintf, character arrays or other features which belong to C style rather than C++. You can use a character array where required as the input to a system call.

Submission instructions:

Same rules as in previous assignments, including the following:

Whenever you issue a system call such, make sure to check for error and terminate, e.g., exit(-1), if the system call fails.

Submit a zip file containing hw4.cpp, the source file for your object (and any other source files you create) and a makefile.

Business case:

The purpose of the detail lines and the “passengers this leg” total is to allow the gate agents to track passenger loading and the passenger load.

The purpose of the “passengers all legs” field is to see how many people would be inconvenienced if the complete flight was cancelled.

The purpose of the date, month and grand totals are to track business, which is seasonal. Most airlines permit reservations 364 days in advance.

There is no need for a terminator on the length field since it is a fixed-length field. Technically, there is no need for a terminator on the data field either but it greatly simplifies debugging. You could save a couple of bytes by eliminating the terminator on the data field and using unsigned binary instead of characters for the length, but it makes the intermediate file a lot harder to visualize.

Grading rubric:

20 points: pipe handling

20 points: binary I/O

20 points: building table and sorting

20 points: printing detail lines

20 points: printing total lines

3

Our website has a team of professional writers who can help you write any of your homework. They will write your papers from scratch. We also have a team of editors just to make sure all papers are of HIGH QUALITY & PLAGIARISM FREE. To make an Order you only need to click Ask A Question and we will direct you to our Order Page at WriteDemy. Then fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.

Fill in all the assignment paper details that are required in the order form with the standard information being the page count, deadline, academic level and type of paper. It is advisable to have this information at hand so that you can quickly fill in the necessary information needed in the form for the essay writer to be immediately assigned to your writing project. Make payment for the custom essay order to enable us to assign a suitable writer to your order. Payments are made through Paypal on a secured billing page. Finally, sit back and relax.

Do you need an answer to this or any other questions?

About Writedemy

We are a professional paper writing website. If you have searched a question and bumped into our website just know you are in the right place to get help in your coursework. We offer HIGH QUALITY & PLAGIARISM FREE Papers.

How It Works

To make an Order you only need to click on “Order Now” and we will direct you to our Order Page. Fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.

Are there Discounts?

All new clients are eligible for 20% off in their first Order. Our payment method is safe and secure.

Hire a tutor today CLICK HERE to make your first order