Building unix daemons - ipc using fifos

Assignment Help Computer Engineering
Reference no: EM13997727

Word-Count Client-Server

Important Reminder: As per the course Academic Honesty Statement, cheating of any kind will minimally result in receiving an F letter grade for the entire course.

The document first describes the aims of this project. It then gives the requirements as explicitly as possible. It hints at how the project may be implemented. It then briefly describes tools which may be used for this project. Finally, it lists exactly what needs to be submitted.

Aims

The aims of this project are as follows:

To introduce you to building Unix daemons.

To expose you to IPC using FIFOs.

To familiarize you with the Unix dynamic loading API.

Requirements

Write a client program with executable word-count and server program with executable word-countd. Between them, the client and server should be able to compute word-counts as per your previous projects, with the server computing the actual word-counts and the client merely invoking the server and displaying the results.

The server should be started using the command:

$ ./word-countd DIR_NAME

When started, the server should start up a daemon process running in directory DIR_NAME (which must exist). The initial server process should exit after printing the PID of the daemon process followed by a newline on standard output.

The daemon should listen for a request from a client on a well-known FIFO in directory DIR_NAME, creating the FIFO if it does not already exist. When a request is received, it should process it and return the results to the client.

The client should be run using the command:

$ ./word-count DIR_NAME WORD_CHAR_MODULE N STOP_WORDS FILE1...

where DIR_NAME specifies the directory for the server, WORD_CHAR_MODULE specifies the name of a dynamically-loaded module which defines a function isWordChar(), and the remaining arguments are as in your previous projects. If WORD_CHAR_MODULE, STOP_WORDS, FILE1... specify relative paths, then they are assumed to be relative to DIR_NAME.

When invoked, the client should send a request to the server using the well-known FIFO in DIR_NAME sending it the command-line arguments starting with WORD_CHAR_MODULE. The server should process the request concurrently in a separate worker process and return results to the client. The client should output on standard output the N most frequently occurring words in one-or-more files FILE1... which are not in the file STOP_WORDS.

A word is a maximal sequence of characters c for which the function isWordChar(c) in WORD_CHAR_MODULE returns non-zero.

Words which differ merely in case are regarded as identical.

The output should consist of N lines with each line containing a lower-cased word followed by a single space character followed by the count of that word across all files FILE1.... The lines should be sorted in non-increasing order by count; ties where words have the same count should be broken with the lexicographically greater word preceeding the lexicographically smaller word.

The program should handle files which do not necessarily end with newline.

If the arguments to either the word-countd or the word-count programs are in error, then that program should print a suitable error message on standard error and terminate.

Both programs should also detect any runtime errors (like memory allocation errors, I/O errors, process errors) and terminate after outputting a suitable error message on standard error. However, if a worker process encounters an error, it should not stop the main daemon process; ideally, it should signal the error to the client so that it can be reported by the client.

The program must meet the following implementation restrictions:

All communication between the client and server should be done using named pipes (FIFOs). (The details of the exact communication protocol are up to you)

Each client request should be handled by the server using a concurrent worker process spawned using the double-fork technique to avoid zombies.

The client should exit only after cleaning up all resources (including any client-specific FIFO's).

The worker process which handles each client request should clean up all resources before terminating.

The programs may assume that the the client command-line arguments starting with WORD_CHAR_MODULE can be contained within PIPE_BUF bytes using any reasonable scheme.

The server may assume that all distinct words in all of FILE1... and their counts can fit within memory.

There should not be any implementation restrictions on the size of entities except those defined by available resources. Hence there should not be any restriction on the size of a word or a line.

The following steps are not prescriptive:

1. Review the material on daemons, FIFOs and dynamically loaded modules. Design a protocol to communicate between your client and server. The protocol should also take care of the creation and cleanup of any client-specific FIFOs.

2. Start your client and server code using your code for prj1 or the solution.

3. Remove the hard-coded definition for what constitutes a word-char. Instead, add a additional argument to the program specifying the module and change the program to load the module and use the word-char definition provided by the module. Test.

4. Modify the program to become a daemon meeting all the specifications for word-countd except that instead of writing the results back to the client; instead have the worker process simply write the results to standard output (assuming you have not closed it). You can test by simply echo'ing a client request to your well-known FIFO.

5. Write a simple client program which when run, simply writes its arguments (starting with WORD_CHAR_MODULE) to the well-known FIFO. Test.

6. Modify your server to return the results to the client according to your protocol and modify the client to write those results onto standard output as per the specifications. Test.

7. Iterate until your client and server meet all the specifications.

Reference no: EM13997727

Questions Cloud

Find that location : Sitting stationary at some location not far above the Earth's surface is a charge of q = -0.320 nC. Is there any location where a single proton can be in equilibrium relative to this charge? Ignore the effects of drag (air resistance), buoyancy, w..
What elements are missing in performance management process : What important elements are missing in the performance management process? In what ways would improving the performance management process help improve discipline and morale at Modern Office Supply
Explain the organizational and societal functions of pr : For the organization and the issue you have chosen, explain how Public Relations should address both the organizational and societal audiences and what public relations tools can be used to do so.
What is the uncertainty in the acceleration due to gravity : What is the acceleration due to gravity on the surface of this hypothetical planet? What is the uncertainty in the acceleration due to gravity found above?
Building unix daemons - ipc using fifos : The aims of this project are as follows - To introduce you to building Unix daemons, to expose you to IPC using FIFOs and to familiarize you with the Unix dynamic loading API.
Ethical perspective has evolved throughout the program : Explain the role of ethics and social responsibility in developing a strategic plan, considering stakeholder needs.
Perform an internal environmental analysis : How you intend to ensure the organization's vision, mission, and people strategies and values statements are aligned with the proposed strategic plan.
Evaluates an organization''s innovation strategy : Write a paper of no more than 1,050 words that describes and evaluates an organization's innovation strategy.
Find the maximum ratio of m2 over m1 : For the situation below, find the maximum ratio of m2 over m1 for which block 1 does not slide. The pulleys are assumed to be massless, frictionless, and do not move. The coefficient of static friction between the inclined plane and mass one is 2..

Reviews

Write a Review

Computer Engineering Questions & Answers

  How to use a sorting algorithm

Prompt the user for name and age of a group of people. The group's size is unknown at first , so the program must keep asking the user if they want to enter more data.

  Define php and asp.net

What are some of the pros and cons of open source versus proprietary software.

  Create two function in c++ with using arrays

create two function in C++ with using arrays.

  Prompts the user to enter the number of students

Write down a Java program that prompts the user to enter the number of students and each student's name and score, and finally displays the student with the highest score and the student with second-highest score.

  What are the reasons of project failure

Make sure to contain how and why project was initiated, what setting up was done, how plan went wrong and what was done to solve the trouble. What are the reasons of project failure

  Smtp does not guarantee that all messages are delivered

Messages typically are sent by multiple SMTP systems while going from the sender to the recipient.

  A full description of the new system a description of its

begin working on your presentation.submit an outline of the presentationthat includes the followinga full description

  Make a script that uses the following components

design a script that uses the following components: an array, sub procedure, explicit declaration, RUNAT=Server, and a function.

  Createnbspa table with the following four column headings

understanding object-oriented methodologies is often difficult. you already understand that object-oriented analysis

  What is bobs private key

What is Bob's private key?

  What the command does, how it might be used

What the command does, how it might be used.

  What do you mean by the term procedure

What do you mean by the term procedure - what is the difference between near call and far call?

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd