For this assignment, you will implement something that looks a lot like a print spooler. The print spooler itself will run as some other userid. You must test it as one or more other users. Briefly, you must implement three commands, "addqueue", "showqueue", and "rmqueue". All are privileged. "addqueue' takes a set of file names as arguments, and copies the contents of those files to some protected directory. "showqueue" lists the queued files: some arbitrary name (*not* the original file name, but a number is fine), the owner (the userid who made the request), the time and date it was added, and some sort of unique identifier. This unique identifier may or may not be the same as the file name; that's entirely up to you. "rmqueue" takes a list of unique identifiers and deletes those entries from the queue. Only the user who added a file to the queue may delete it. You do not need to worry about race conditions for generating file names or unique identifiers. That is, there is no need to lock any resource for the counter. You may use setuid or message-passing. If you use the latter, it's perfectly ok to start some daemons manually. You must use at least three userids: one for the protected resource, and at least two test userids. That latter is needed to test if one user can delete the other's files. There must not be any way to look at or change the spool directory or its contents except through these commands. ---- Output Format: 1. addqueue In case of error, return filename, colon and one space and the error message. $ addqueue file1 file2 file3 $ addqueue file4 file5 file4: error message 2. showqueue One line for each file and one tab between each detail. It should be sorted by date and time it was added. If there is nothing in the queue, nothing need to be shown. You are welcome to use userid or username for the owner field. $ showqueue arbitrary_file_name_1 1000 2016-09-28_13:33 fileid01 arbitrary_file_name_2 1000 2016-09-28_13:33 fileid02 arbitrary_file_name_3 1000 2015-09-28_13:34 fileid03 arbitrary_file_name_4 1001 2015-09-28_13:52 fileid05 Here, arbitrary_file_name_1/2/3/4 is the name you give to your file and is not a format that you have to follow. 3. showqueue Similar to add queue, in case of error, put filename, colon, one space and the error message. $ rmqueue fileid01 $ rmqueue fileid05 fileid04 fileid04: error_message