Όνομα: Γεώργιος-Κωνσταντίνος Ζαχαρόπουλος
Εξοικέιωση με:
- processes
- use of system calls
- fork/exec
- communication between pipes και named pipes
- low-level I/0
- singals
- shell scripts
Μια οντότητα listener με την χρήση της inotifywait στέλνει ειδοποιήσεις στην οντότητα manager όταν βλέπει αλλαγές στον φάκελο που γίνεται monitoring. O manager με την σειρά του δημιουργεί και επικοινωνεί με τους workers οι οποίοι διαβάζουν τα καινούργια αρχεία και εξάγουν τα location από τα URLS που βρίσκονται μέσα σε αυτά τα αρχεία, δημιουργώντας καινούργια αρχεία που κρατούν αυτή την πληροφορία.
Το shell script finder.sh δέχεται ως όρισμα TLDs και επιστρέφει πόσες φορές έχουν βρεθεί στα αντίστοιχα αρχεία των workers.
Το project έγινε στο πλαίσιο του μαθήματος Κ24:Προγραμματισμός Συστήματος
- Mπορείτε να εκτελέσετε το πρόγραμμα τρέχοντας
make run
μέσα στον φάκελο programs. Επίσης για να ελέγξετε για leaks εκτελέστεmake
και στη συνέχειαmake valgrind
. Μπορείτε να αλάξετε το path που θέλετε να ακούει ο listener από τα args του makefile, με την προυπόθεση ότι ο φάκελος που διαλέξατε υπάρχει. Στο project1 υπάρχει ήδη άδειος φάκελος monitoring για αυτή την δουλειά, στον οποίο μπορείτε να μεταφέρετε αρχεία. Ο listener δεν θα πρέπει να ακούει στον φάκελο worker_outputs καθώς εκεί θα φτιάχνονται τα αρχεία των workers. Επίσης για να εκτελεστεί σωστά ο finder.sh, αφού έχουν δημιουργηθεί πρώτα τα αρχεία .out, θα πρέπει να είστε στον φάκελο project1 καθώς μέσα στο script χρησιμοποιείται ηls
. Mεmake clean
διαγράφονται όλα τα εκτελέσιμα, τα .out του worker_outputs, τα .txt αρχεία που έχουν μπει στον monitoring φάκελο και τέλος τα results του sniffer. Άμα θέτε να ξανατρέξετε το πρόγραμμα να κάνετε πρώταmake clean
.
- Ο worker όταν δέχεται το σήμα SIGINT από τον χρήστη τότε δεν τελειώνει την δουλεία του αλλά σταματάει αμέσως. Αυτό έχεις ως αποτέλεσμα να υπάρχουν still reachable leaks από την βιβλιοθήκη STL για να τα strings που είχαν χρησιμοποιηθεί.
- Το πρόγραμμα στην αρχή δεν φτιάχνει όσους workers όσα και τα files που εισάγονται, αντίθετα φτιάχνει workers μόνο όταν δεν υπάρχουν ήδη available.
- Tα ονόματα των fifo δημιουργούνται αυτόματα. Είναι της μορφής <fifo_name_id> όπου id, o αριθμός του worker. Το id του worker είναι η σειρά της δημιουργίας του. Ο πρώτος έχει id->0 ο δεύτερος id->1 κτλ.
- Παρατήρησα ότι ο μηχανισμός drag and drop δεν λειτουργεί σωστά με το πρόγραμμα. οπότε για move ή create προυποθέτουμε οτι χρησιμοποιούνται οι εντολές
mv
καιcp
από το bash.