The goal of this project is to become familiar with concurrent processing in Linux using shared memory.
As Kim knew from her English courses, palindromes are phrases that read the same way right-to-left as they do left-to-right, when disregarding capitalization. Being the nerd she is, she likened that to her hobby of looking for palindromes on her vehicle odometer: 245542 (her old car), or 002200 (her new car).
Now, in her first job after completing her undergraduate program in Computer Science, Kim is once again working with Palindromes. As part of her work, she is exploring alternative security encoding algorithms based on the premise that the encoding strings are not palindromes. Her first task is to examine a large set of strings to identify those that are palindromes, so that they may be deleted from the list of potential encoding strings.
The strings consist of letters, (a, . . . , z, A, . . . Z), and numbers (0, . . . , 9). Ignore any punctuations and spaces. Kim has a one-dimensional array of pointers, mylist, in which each element points to the start of a string (You can use string class of C++ if you so desire, but I think it will be easier to use C strings for this project). Each string terminates with the NULL character. Kim’s program is to examine each string and print out all strings that are palindromes in one file while the non-palindromes are written to another file.
Your job is obviously to write the code for Kim. The main program will read the list of palindromes from a file (one string per line) into shared memory and fork off processes. Each child will test the string at the index assigned to it and write the string into appropriate file, named [login to view URL] and nopalin.out. In addition, the processes will write into a log file (described below). You will have to use the code for multiple process ipc problem (Solution 4 in notes) to protect the critical resources – the two files.
Make sure you never have more than 20 processes in the system at any time, even if the program is invoked with n > 20. Add the pid of the child to the file as comment in the log file.